Pandas:从列到唯一值的总和值

Pet*_*rov 3 python pandas

我有数据帧

ID    time    coeff   category
111    12      1.5     shop
111    15      1.5       shop
222    12      0.8     shop
222    18      0.8     shop
Run Code Online (Sandbox Code Playgroud)

我需要得到

category    unique_users
 shop         2.3
Run Code Online (Sandbox Code Playgroud)

如果我试试

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

我知道2,因为它返回了唯一的df.ID.如何将值汇总df.coeff为唯一df.ID

Zer*_*ero 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
Run Code Online (Sandbox Code Playgroud)