2017-09-05 246 views
0

我有數據幀熊貓:和值從列唯一值

ID time coeff category 
111 12  1.5  shop 
111 15  1.5  shop 
222 12  0.8  shop 
222 18  0.8  shop 

我需要得到

category unique_users 
shop   2.3 

如果我嘗試

result = df.groupby(['category']).agg({'ID': pd.Series.nunique}).rename(columns={ 'member_id': 'unique_users'}).reset_index() 

我得到2,因爲它返回獨特的df.ID。我如何在df.coeff中總結唯一df.ID的值?

回答

2

這裏有一種方法

In [2314]: (df.groupby('category') 
       .apply(lambda x: x.groupby('ID').coeff.first().sum()) 
       .reset_index(name='unique_users')) 
Out[2314]: 
    category unique_users 
0  shop   2.3 
1

這應該做你想要什麼:

df.drop_duplicates(subset=['ID']).groupby(['category']).agg(sum).drop(['ID', 'time'], axis=1) 

Out[133]: 
      coeff 
category  
shop  2.3 
1

通過使用drop_duplicates

df.drop_duplicates(['ID','category']).groupby('category').agg({'coeff':'sum'}) 
    Out[763]: 
       coeff 
    category  
    shop  2.3