You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MultiIndex多级索引DataFrame中实现二级列相减并新增C列

解决方案

步骤说明

  1. 为每个分组(x、y、z)计算C列:对应组的a列数值减去b列数值。
  2. 重新调整列顺序,将每个分组的C列放在a、b列之前。

完整代码

import pandas as pd

# 构造原始数据
df = pd.DataFrame(
    data=[[100,200,400,500,111,222], 
          [77,28,110,211,27,81], 
          [11,22,33,11,22,33],
          [213,124,136,147,54,56]]
)
df.columns = pd.MultiIndex.from_product([['x', 'y', 'z'], list('ab')])

# 为每个分组计算C列
for group in ['x', 'y', 'z']:
    df[(group, 'c')] = df[(group, 'a')] - df[(group, 'b')]

# 重新排列列顺序:每个分组先c,再a,再b
new_columns = []
for group in ['x', 'y', 'z']:
    new_columns.extend([(group, 'c'), (group, 'a'), (group, 'b')])
df = df[new_columns]

# 打印结果
print(df)

代码解释

  • 遍历每个分组(x/y/z),通过多级列索引直接定位a和b列,计算差值生成对应分组的c列。
  • 构建新的列顺序列表,确保每个分组内的列顺序为c -> a -> b,通过重新索引DataFrame完成列顺序调整。

内容的提问来源于stack exchange,提问作者user18708380

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:20:20