2017-06-01 157 views
2

不同的值我有一个数据帧,看起来像这样:熊猫 - 计算每个

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 

如何做到这一点的熊猫吗?

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

回答

9

我认为你需要groupbynunique

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} 
+0

很高兴能帮助,祝你好运! – jezrael