我的 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)
sum
的level
参数表示分组。
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/