我有数据框
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
相加?
答案 0 :(得分:7)
这是一种方式
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 :(得分:3)
使用drop_duplicates
df.drop_duplicates(['ID','category']).groupby('category').agg({'coeff':'sum'})
Out[763]:
coeff
category
shop 2.3
答案 2 :(得分:1)
这应该做你想做的事:
df.drop_duplicates(subset=['ID']).groupby(['category']).agg(sum).drop(['ID', 'time'], axis=1)
Out[133]:
coeff
category
shop 2.3