我有一个像
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/