Pandas group-by,filter和aggregate

时间:2017-02-14 20:38:53

标签: python pandas filter group-by aggregate

我有一个像

这样的数据框
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()})

1 个答案:

答案 0 :(得分:2)

只需先访问type SeriesGroupBy,您就可以更轻松地完成此操作。

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

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