首页 > 解决方案 > 使用分组变量计算多列中的值

问题描述

我有一个熊猫数据框,其中包含如下所示的数据:

levels char_1 char_2
a      dog    dog
a      cat    dog
b      cow    cat
b      dog    dog

我想要group_by列并计算一个值出现在列或列levels中的总次数char_1char_2

生成的数据框如下所示:

levels char  count
a      dog    3
a      cat    1
b      dog    2
b      cow    1
b      cat    1

我已经尝试过使用数据透视表,但无法理解 pandas 语法。

标签: pythonpandas

解决方案


用于DataFrame.meltunpivot 然后GroupBy.size用于计数:

df1 = (df.melt('levels', value_name='char')
         .groupby(['levels','char'])
         .size()
         .reset_index(name='count'))
print (df1)
  levels char  count
0      a  cat      1
1      a  dog      3
2      b  cat      1
3      b  cow      1
4      b  dog      2

推荐阅读