我有一个像
这样的数据框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()})
答案 0 :(得分:2)
只需先访问type
SeriesGroupBy,您就可以更轻松地完成此操作。
>>> df.groupby('id').type.nunique()
id
1 2
2 1
3 2
4 1
6 1
正如评论中所提到的,当前的方法不起作用,因为agg
期望它可以调用的函数对象(nunique
),而不是像{{1}那样的实际函数调用尝试}。