我有一个像这样的数据框
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/