首页 > 解决方案 > groupby 在熊猫的两列中计算相同的值?

问题描述

我有以下熊猫数据框:

name1   name2
A       B
A       A
A       C
A       A
B       B
B       A

我想添加一个名为 new 的列,它计算name1 name2保留合并的列(name1和中的不同值name2)。因此,预期的输出是以下数据帧:

name   new
   A     7
   B     4
   C     1

我试过了

df.groupby(["name1"]).count().groupby(["name2"]).count(),除此之外……但尽管最后一个似乎给了我正确的结果,但我无法获得连接的数据集。

标签: pythonpandas

解决方案


您可以value_counts使用df.stack()

df[['name1','name2']].stack().value_counts()
#df.stack().value_counts() for all cols

A    7
B    4
C    1

具体来说:

(df[['name1','name2']].stack().value_counts().
      to_frame('new').rename_axis('name').reset_index())

  name  new
0    A    7
1    B    4
2    C    1

推荐阅读