Pandas - 计算每列的不同值数量

3

我有一个数据框,看起来像这样:

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

如何在pandas中实现这个功能?

(如果可能的话,我想知道是否有一种方法可以将结果以字典的形式返回,而不需要手动迭代)

1个回答

10

我认为你需要使用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

对于字典,请添加Series.to_dict

d = df.groupby('Id')['ActivityId'].nunique().to_dict()
print (d)
{1: 2, 2: 1}

1
很高兴能帮忙,祝你好运! - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接