我有一个如下所示的数据框:
Id ActivityId ActivityCode
1 2 3
1 2 4
1 3 2
我需要计算与Id相关的不同活动ID。
在上面的例子中,id 1将返回2,因为该id为2个不同的活动ID。
SQL看起来会这样:
SELECT COUNT(DISTINCT ActivityId) FROM table GROUP BY Id
我如何在熊猫中这样做?
(如果可能的话,我想知道是否有办法在字典中获得结果,而无需手动迭代)
答案 0 :(得分:10)
print (df)
Id ActivityId ActivityCode
0 1 2 3
1 1 2 4
2 1 3 2
3 2 8 7
df = df.groupby('Id')['ActivityId'].nunique()
print (df)
Id
1 2
2 1
Name: ActivityId, dtype: int64
dict
添加Series.to_dict
:
d = df.groupby('Id')['ActivityId'].nunique().to_dict()
print (d)
{1: 2, 2: 1}