2017-10-08 3 views
1

내가 다음 dataframe 있습니다팬더 데이터 프레임의 색인 필드를 참조하는 방법은 무엇입니까?

payment_method_id payment_plan_days plan_list_price actual_amount_paid date 
msno         
YyO+tlZtAXYXoZhNr3Vg3+dfVQvrBVGO8j1mfqe4ZHc= 41 30 129 129 2015-01-01 
AZtu6Wl0gPojrEQYB8Q3vBSmE2wnZ3hi1FbK1rQQ0A4= 41 30 149 149 2015-01-01 
UkDFI97Qb6+s2LWcijVVv4rMAsORbVDT2wNXF0aVbns= 41 30 129 129 2015-01-02 

의 핵심은 "msno"입니다, 나는 "msno"의 대부분은 다른 날짜에 하나 payment_method_id를 사용하고 있는지 여부를 확인해야합니다.

그래서 나는

transactions.groupby(['msno', 'payment_method_id']).count() 

를 사용하여, "msno", "payment_method_id"에 의해 그룹에 시도했지만 오류가있어 : KeyError를을 'msno'

그룹을 다른 분야는, 예를 들어, 잘 작동 사용하여 :

msno 위해 그
transactions.groupby(['payment_plan_days', 'payment_method_id']).count() 

, 심지어

groupby level=0 0123을 사용하여 수

하지만 첫 번째 열을 포함하는 두 개의 수준을 그룹화 할 수 없습니다.

이 그것을 transactions.columns

Index(['payment_method_id', 'payment_plan_days', 'plan_list_price', 'actual_amount_paid', 'date'] dtype='object')

어떤 제안에 보이는 무엇인가?

Strings passed to DataFrame.groupby() as the by parameter may now reference either column names or index level names. Previously, only column names could be referenced. This allows to easily group by a column and index level at the same time.

transactions.reset_index().groupby(['msno', 'payment_method_id']).count() 

그래서 후 잘 작동합니다 코드를 업그레이드 :

transactions.groupby(['msno', 'payment_method_id']).count() 

공지 사항

답변

1

나는 당신의 팬더 버전이 우는 소리 0.20.1 때문에 당신이 열을 변환 인덱스 reset_index 필요하다고 생각 :

차이점 countsizecount이고, NaNs 및 size은 생략됩니다.