我有一个像

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)


目标是获得一个按ID分组并在每组中具有每种类型的nunique的数据框。

我以为这样可以解决它,但似乎不起作用:

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

最佳答案

您只需先访问type SeriesGroupBy,即可更简单地完成此操作。

>>> df.groupby('id').type.nunique()
id
1    2
2    1
3    2
4    1
6    1




如评论中所述,您的当前方法不起作用,因为agg期望它可以调用(nunique)的函数对象,而不是像您使用nunique()那样的实际函数调用尝试。

关于python - Pandas 分组,过滤和聚合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42235756/

10-10 22:20