Pandas - 计算每列的不同值[重复]

Posted

技术标签:

【中文标题】Pandas - 计算每列的不同值[重复]【英文标题】:Pandas - count distinct values per column [duplicate] 【发布时间】:2017-11-02 06:08:45 【问题描述】:

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

Id ActivityId ActivityCode

1   2           3
1   2           4
1   3           2

我需要获取与 Id 相关的不同 Activity ID 的计数。

在上面的示例中,id 1 将返回 2,因为该 id 有 2 个不同的活动 id。

SQL 看起来是这样的:

SELECT COUNT(DISTINCT ActivityId) FROM table GROUP BY Id

如何在 pandas 中做到这一点?

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

很高兴能帮上忙,祝你好运!

以上是关于Pandas - 计算每列的不同值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

合并具有来自两个不同列的匹配值的 DataFrame - Pandas [重复]

在 Pandas 中获取每个分区的每列平均值 [重复]

Pandas - 具有重复值的列的外部连接

如何计算Apache Spark DataFrame中所有列的不同值的数量[重复]

从文本文件中删除每个单独列中的重复项

对 Pandas 中各列的多行值求和 [重复]