首页 > 解决方案 > Pandas:如何按数据框计算组中的不同值?

问题描述

从昨天开始,我一直在搜索 stackoverflow 以寻找类似的问题,但我找不到与我的场景匹配的问题。

我从一个多列数据框开始,我试图获取按特征 A 分组的特征 B 的不同值的计数/总和。

df_gby= df.groupby (['featureA', 'featureB')]
df_gby['featureA', 'featureB'].head () # I am interested only on these 2 columns
featureA featureB
------------------
str1     feature1
str1     feature2
str1     feature3
str2     feature3
str2     feature4
str3     feature1
str3     feature2
str3     feature2
str3     feature2
str3     feature5

我想得到这样的结果:

featureA featureB_count
-----------------------
str1     3
str2     2
str3     3

请注意 str3 的 feature2 重复了 3 次。它应该算作 1,因此不同值的总数应该是 3,而不是 5。我不确定这是否发生在 df_gby 中,但可以肯定它发生在初始 df 上。可能在 df_gby 上没有重复项,因为它是 group by 2 个功能的结果,但我强调这一点只是为了获得一些提示。这些 2 列是字符串/对象,而不是数字。如果上面的 groupby 操作在 featureB 上返回不同的值,那么计算 featureA 中有多少组不是一件简单的事情吗?(即便如此,我还是无法得到这个数字。groupby 数据帧是个技巧,并不是每个常规函数都可以在 groupby 数据帧上使用......)

我怀疑是这种情况,因为 df_gby 上的 size 为每对返回 1,据我所知。

featureA featureB
----------------------------
str1     feature1     1
str1     feature2     1
str1     feature3     1
str2     feature3     1
str2     feature4     1
...(truncated output)

数据框很大,超过 5000 行,所以我无法正确检查它,以确保在 groupby 操作后 featureB 上没有重复条目,因为输出被截断,但正如我所说,肯定有重复 featuresB 上特定特征A的原始df。

我感谢您的帮助,

标签: pandascount

解决方案


推荐阅读