如何在MultiIndex多级索引DataFrame中实现二级列相减并新增C列
解决方案
步骤说明
- 为每个分组(x、y、z)计算C列:对应组的
a列数值减去b列数值。 - 重新调整列顺序,将每个分组的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
相关产品推荐
相关产品推荐

