Pandas-색인에서 데이터 프레임 정렬 (단어 포함)

ScoutEU

날짜를 월로 변환하고 숫자를 문자열, 즉 4 월, 5 월로 변경 한 데이터 프레임이 있습니다. 그런 다음 더 작은 데이터 세트를 갖도록 월별로 그룹화했습니다. 그러나 달의 순서가 잘못되어 4 월부터 3 월까지 진행되도록하고 싶습니다.

열로 정렬하고 싶지만 그룹화 한 후 월이 더 이상 열이 아닌 것 같아서 인덱스라고 가정합니다.

이것은 내 코드입니다.

aDF = pd.DataFrame(e)
rgDF = aDF[['GrantRefNumber','Call','FirstReceivedDate','TotalGrantValue']]
rgaDF = rgDF.drop('GrantRefNumber',1)
rgbDF = rgaDF.drop('Call',1)

rgbDF['month'] = pd.DatetimeIndex(rgbDF['FirstReceivedDate']).month
rgbDF['month'] = rgbDF['month'].apply(lambda x: calendar.month_abbr[x])

gA = rgbDF.groupby('month').agg({'TotalGrantValue':sum, 'FirstReceivedDate':'count'}).rename(columns={'FirstReceivedDate':'Count'})
gA['TotalGrantValue'] = gA['TotalGrantValue'].map('{:,.2f}'.format)

다음을 생성합니다.

Count   TotalGrantValue
        month       
        Apr 29  14,039,166.51
        Aug 32  15,340,273.93
        Dec 28  14,801,964.91
        Feb 28  15,946,952.06
        Jan 33  17,820,324.72
        Jul 31  16,870,364.57
        Jun 37  18,472,945.88
        Mar 39  22,387,224.85
        May 24  11,517,789.48
        Nov 31  16,761,506.64
        Oct 28  12,965,535.58
        Sep 34  16,752,631.34

나는 이것을 시도하고 있지만 작동하지 않습니다 (오류 발생).

gA.sort_index(by=['Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar'])
gA

전체 오류 :

KeyErrorTraceback (most recent call last)
<ipython-input-43-66c4870a7499> in <module>()
      9 
     10 vals = ['Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar']
---> 11 gA = gA.set_index('month').reindex(a).reset_index()

C:\Anaconda\lib\site-packages\pandas\core\frame.pyc in set_index(self, keys, drop, append, inplace, verify_integrity)
   2926                 names.append(None)
   2927             else:
-> 2928                 level = frame[col]._values
   2929                 names.append(col)
   2930                 if drop:

C:\Anaconda\lib\site-packages\pandas\core\frame.pyc in __getitem__(self, key)
   2060             return self._getitem_multilevel(key)
   2061         else:
-> 2062             return self._getitem_column(key)
   2063 
   2064     def _getitem_column(self, key):

C:\Anaconda\lib\site-packages\pandas\core\frame.pyc in _getitem_column(self, key)
   2067         # get column
   2068         if self.columns.is_unique:
-> 2069             return self._get_item_cache(key)
   2070 
   2071         # duplicate columns & possible reduce dimensionality

C:\Anaconda\lib\site-packages\pandas\core\generic.pyc in _get_item_cache(self, item)
   1532         res = cache.get(item)
   1533         if res is None:
-> 1534             values = self._data.get(item)
   1535             res = self._box_item_values(item, values)
   1536             cache[item] = res

C:\Anaconda\lib\site-packages\pandas\core\internals.pyc in get(self, item, fastpath)
   3588 
   3589             if not isnull(item):
-> 3590                 loc = self.items.get_loc(item)
   3591             else:
   3592                 indexer = np.arange(len(self.items))[isnull(self.items)]

C:\Anaconda\lib\site-packages\pandas\core\indexes\base.pyc in get_loc(self, key, method, tolerance)
   2393                 return self._engine.get_loc(key)
   2394             except KeyError:
-> 2395                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2396 
   2397         indexer = self.get_indexer([key], method=method, tolerance=tolerance)

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5239)()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5085)()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20405)()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20359)()

KeyError: 'month'
이스 르엘

다음 strftime으로 변환 해야한다고 생각합니다 months.

팬더의 크기와 개수의 차이점은 무엇입니까?

#sample data
rng = pd.date_range('2017-04-03', periods=20, freq='20d')
aDF = pd.DataFrame({'FirstReceivedDate': rng, 'TotalGrantValue': range(20)})  
print (aDF)
   FirstReceivedDate  TotalGrantValue
0         2017-04-03                0
1         2017-04-23                1
2         2017-05-13                2
3         2017-06-02                3
4         2017-06-22                4
5         2017-07-12                5
6         2017-08-01                6
7         2017-08-21                7
8         2017-09-10                8
9         2017-09-30                9
10        2017-10-20               10
11        2017-11-09               11
12        2017-11-29               12
13        2017-12-19               13
14        2018-01-08               14
15        2018-01-28               15
16        2018-02-17               16
17        2018-03-09               17
18        2018-03-29               18
19        2018-04-18               19

#filter only data what need, so drop is not necessary     
rgbDF = aDF[['FirstReceivedDate','TotalGrantValue']]

rgbDF['month'] = pd.to_datetime(rgbDF['FirstReceivedDate']).dt.strftime('%b')

gA = rgbDF.groupby('month') \
          .agg({'TotalGrantValue':'sum', 'FirstReceivedDate':'count'}) \
          .rename(columns={'FirstReceivedDate':'Count'})

gA['TotalGrantValue'] = gA['TotalGrantValue'].map('{:,.2f}'.format)
print (gA)
      TotalGrantValue  Count
month                       
Apr             20.00      3
Aug             38.00      3
Dec             13.00      1
Feb             16.00      1
Jan             29.00      2
Jul             52.00      3
Jun             29.00      3
Mar             35.00      2
May             43.00      3
Nov             52.00      3
Oct             38.00      2
Sep             70.00      4

After groupbyby monthsreindex사용자 지정 목록에서 사용할 수 있습니다 .

vals = ['Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar']
gA = gA.reindex(vals)
print (gA)
      TotalGrantValue  Count
month                       
Apr             20.00      3
May              2.00      1
Jun              7.00      2
Jul              5.00      1
Aug             13.00      2
Sep             17.00      2
Oct             10.00      1
Nov             23.00      2
Dec             13.00      1
Jan             29.00      2
Feb             16.00      1
Mar             35.00      2

또 다른 해결책은 목록에 범주가있는 정렬 된 범주사용하는 것이므로 groupby필요에 따라 출력이 정렬됩니다.

rgbDF = aDF[['FirstReceivedDate','TotalGrantValue']]

vals = ['Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar']
rgbDF['month'] = pd.Categorical(rgbDF['FirstReceivedDate'].dt.strftime('%b'), 
                                 categories=vals, ordered=True) 

gA = rgbDF.groupby('month')
          .agg({'TotalGrantValue':'sum', 'FirstReceivedDate':'count'})
          .rename(columns={'FirstReceivedDate':'Count'})
gA['TotalGrantValue'] = gA['TotalGrantValue'].map('{:,.2f}'.format)
print (gA)
      TotalGrantValue  Count
month                       
Apr             20.00      3
May              2.00      1
Jun              7.00      2
Jul              5.00      1
Aug             13.00      2
Sep             17.00      2
Oct             10.00      1
Nov             23.00      2
Dec             13.00      1
Jan             29.00      2
Feb             16.00      1
Mar             35.00      2

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Pandas : 열에 특정 단어를 포함하는 데이터 프레임 검색 및 반환

분류에서Dev

데이터 프레임 Pandas HTML에서 특정 단어 강조

분류에서Dev

열에 Pandas 데이터 프레임의 다른 열의 단어가 포함되어 있는지 확인

분류에서Dev

행 제거에 Pandas 데이터 프레임에 영어가 아닌 단어가 포함됨

분류에서Dev

Pandas 데이터 프레임 내에서 데이터 재정렬

분류에서Dev

Pandas에서 데이터 프레임의 값을 어떻게 정렬합니까?

분류에서Dev

Pandas : Pandas 데이터 프레임에 특정 값이 포함되어 있는지 어떻게 확인할 수 있나요?

분류에서Dev

특정 순서에 따라 Pandas 데이터 프레임 정렬

분류에서Dev

Pandas 데이터 프레임에서 다단계 색인 변경 날짜를 datetime으로 설정

분류에서Dev

사전에 규칙을 정의한 후 Pandas 데이터 프레임 (단어 빈도)에서 단어 바꾸기

분류에서Dev

Pandas에서 한 번에 여러 데이터 프레임 정렬

분류에서Dev

Pandas : 두 번째 데이터 프레임 정렬 인덱스로 데이터 프레임 열 정렬

분류에서Dev

다중 인덱싱 된 Pandas 데이터 프레임 정렬

분류에서Dev

python : pandas 데이터 프레임에 정렬

분류에서Dev

Pandas 데이터 프레임에서 다중 인덱스 수준으로 정렬

분류에서Dev

Pandas 데이터 프레임 : 정렬

분류에서Dev

Pandas의 MultiIndex 데이터 프레임에서 중복 하위 색인 수정

분류에서Dev

Pandas 데이터 프레임에 대한 배열과 행렬을 포함하는 사전

분류에서Dev

다른 Pandas 데이터 프레임에서 검색어 찾기

분류에서Dev

다른 데이터 프레임에 나타나는 순서로 multiIndex Python Pandas 데이터 프레임 정렬

분류에서Dev

다중 색인 열을 포함하도록 Pivot pandas 데이터 프레임

분류에서Dev

열 목록에 Pandas 데이터 프레임의 특정 값이 포함 된 행 추출

분류에서Dev

데이터 프레임에서 특정 단어 찾기

분류에서Dev

*가 포함 된 경우 열에서 Pandas 데이터 프레임 필터링

분류에서Dev

데이터 프레임의 열에 특정 값 집합 만 포함되어 있는지 확인하는 방법

분류에서Dev

한 열의 문자열에 Pandas 데이터 프레임의 다른 열의 단어가 포함 된 경우 전체 행을 삭제하는 방법

분류에서Dev

정확한 단어 일치로 Pandas 데이터 프레임 필터링

분류에서Dev

Pandas 데이터 프레임에서 여러 텍스트 열의 값 정렬

분류에서Dev

Pandas 데이터 프레임에서 문자열 바꾸기 및 정렬

Related 관련 기사

  1. 1

    Pandas : 열에 특정 단어를 포함하는 데이터 프레임 검색 및 반환

  2. 2

    데이터 프레임 Pandas HTML에서 특정 단어 강조

  3. 3

    열에 Pandas 데이터 프레임의 다른 열의 단어가 포함되어 있는지 확인

  4. 4

    행 제거에 Pandas 데이터 프레임에 영어가 아닌 단어가 포함됨

  5. 5

    Pandas 데이터 프레임 내에서 데이터 재정렬

  6. 6

    Pandas에서 데이터 프레임의 값을 어떻게 정렬합니까?

  7. 7

    Pandas : Pandas 데이터 프레임에 특정 값이 포함되어 있는지 어떻게 확인할 수 있나요?

  8. 8

    특정 순서에 따라 Pandas 데이터 프레임 정렬

  9. 9

    Pandas 데이터 프레임에서 다단계 색인 변경 날짜를 datetime으로 설정

  10. 10

    사전에 규칙을 정의한 후 Pandas 데이터 프레임 (단어 빈도)에서 단어 바꾸기

  11. 11

    Pandas에서 한 번에 여러 데이터 프레임 정렬

  12. 12

    Pandas : 두 번째 데이터 프레임 정렬 인덱스로 데이터 프레임 열 정렬

  13. 13

    다중 인덱싱 된 Pandas 데이터 프레임 정렬

  14. 14

    python : pandas 데이터 프레임에 정렬

  15. 15

    Pandas 데이터 프레임에서 다중 인덱스 수준으로 정렬

  16. 16

    Pandas 데이터 프레임 : 정렬

  17. 17

    Pandas의 MultiIndex 데이터 프레임에서 중복 하위 색인 수정

  18. 18

    Pandas 데이터 프레임에 대한 배열과 행렬을 포함하는 사전

  19. 19

    다른 Pandas 데이터 프레임에서 검색어 찾기

  20. 20

    다른 데이터 프레임에 나타나는 순서로 multiIndex Python Pandas 데이터 프레임 정렬

  21. 21

    다중 색인 열을 포함하도록 Pivot pandas 데이터 프레임

  22. 22

    열 목록에 Pandas 데이터 프레임의 특정 값이 포함 된 행 추출

  23. 23

    데이터 프레임에서 특정 단어 찾기

  24. 24

    *가 포함 된 경우 열에서 Pandas 데이터 프레임 필터링

  25. 25

    데이터 프레임의 열에 특정 값 집합 만 포함되어 있는지 확인하는 방법

  26. 26

    한 열의 문자열에 Pandas 데이터 프레임의 다른 열의 단어가 포함 된 경우 전체 행을 삭제하는 방법

  27. 27

    정확한 단어 일치로 Pandas 데이터 프레임 필터링

  28. 28

    Pandas 데이터 프레임에서 여러 텍스트 열의 값 정렬

  29. 29

    Pandas 데이터 프레임에서 문자열 바꾸기 및 정렬

뜨겁다태그

보관