2017-02-14 7 views
1

나는 목표는 ID로 그룹화하고 그룹별로 각 유형의 nunique을 가지고있는 dataframe를 얻는 것입니다팬더 그룹으로, 필터 및 집계

import pandas as pd 
import numpy as np 
d = {'id':[1,2,3,4,3,3,1,6], 'type':['t2','t1','t2','t2','t3','t3','t4','t3']} 
df = pd.DataFrame(data=d) 

같은 dataframe 있습니다.

나는이 그것을 해결할 것이라고 생각하지만 작동하지 않는 것 : 당신은 그냥 먼저 type SeriesGroupBy에 액세스하여 좀 더 간단하게이 작업을 수행 할 수 있습니다

df.groupby('id').agg({'type':pd.Series.nunique()}) 
+1

'nunique'에서'()'를 제거하지 말고, 함수에 대한 참조를 호출하지 말고, 호출합니다. 'df.groupby (by = 'id'). agg (pd.Series.nunique)'이 트릭을 수행 할 것입니다. – dnswlt

+0

고마워요 @dnswlt - 새로운 것이 쉬운 일이었습니다. – SteelyDanish

답변

2

. agg 그것 (nunique)를 호출 할 수있는 함수 객체를 예상대로 nunique() 함께 가지고

>>> df.groupby('id').type.nunique() 
id 
1 2 
2 1 
3 2 
4 1 
6 1 
코멘트에서 언급 한 바와 같이

는, 현재의 접근 방식은 아닌 실제 함수 호출 시도를 작동하지 않습니다.