熊猫 - 计算每列的不同值

时间:2017-06-01 07:52:45

标签: python pandas dictionary group-by

我有一个如下所示的数据框:

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

我如何在熊猫中这样做?

(如果可能的话,我想知道是否有办法在字典中获得结果,而无需手动迭代)

1 个答案:

答案 0 :(得分:10)

我认为groupby需要nunique

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}