python - 在 pandas MultiIndex DataFrame 中按级别对列求和

标签 python pandas dataframe multi-index

我的 df 有多个索引列。我所有的值都是 float 的,我想将值与多索引的第一级合并。详情请见下文。

first        bar                 baz                 foo   
second       one       two       one       two       one    
A       0.895717  0.805244  1.206412  2.565646  1.431256    
B       0.410835  0.813850  0.132003  0.827317  0.076467    
C       1.413681  1.607920  1.024180  0.569605  0.875906 

first        bar                 baz                 foo   

A       (0.895717+0.805244) (1.206412+2.565646)  1.431256    
B       (0.410835+0.813850) (0.132003+0.827317)  0.076467    
C       (1.413681+1.607920) (1.024180+0.569605)  0.875906 

这些值实际上是相加的(我只是不想做所有这些:))。底线是我只想升级(我猜是更高级别)并在索引中添加所有值。请让我知道一个好的方法来做到这一点。谢谢!

最佳答案

我相信您正在寻找沿第一个轴的 groupby

df.groupby(level=0, axis=1).sum()

或者(更简洁),

df.sum(level=0, axis=1)

sumlevel 参数表示分组。


df

first  bar     baz     foo    
second one two one two one two
A        2   3   3   4  10   8
B       22  16   7   3   2  26
C        4   5   1   9   6   5

df.sum(level=0, axis=1)

first  bar  baz  foo
A        5    7   18
B       38   10   28
C        9   10   11

就性能而言,上述两种方法之间几乎没有任何区别(后者快几个滴答)。

关于python - 在 pandas MultiIndex DataFrame 中按级别对列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48272452/

相关文章:

python - 获取新列之前的列中的元素

python - MLFlow 和 Hydra 一起使用会导致崩溃

python - 为什么 python 的 urllib2.urlopen 给我一个 403 错误?

python - Django:如何编写查询以使用多列进行排序,通过模板显示

python - 实时 subprocess.Popen 通过 stdout 和 PIPE

python - 如何在 DataFrame 中找到包含特定列表的行

Python-从数据框中选择对象对

python - Pyspark dataframe 列包含字典数组,想要将字典中的每个键都变成一列

python - 如何在Python中匹配来自不同DataFrame的相同列的字段?

python - 检查一个数据帧中的值是否存在于另一个数据帧中