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

如何将Pandas DataFrame的多级列转换为多级索引完成结构重塑

实现方案

你可以直接用Pandas内置的stack方法完成多级列的重塑,不需要手动拆分拼接,完整实现代码如下:

import pandas as pd

# 假设你的原始DataFrame变量名为df
# 先给多级列设置层级名,方便后续操作
df.columns.names = ['metric', 'sym']

# 核心转换逻辑
result = df.stack(level='sym')\
           .swaplevel('date', 'sym')\
           .sort_index()

操作说明

  • stack(level='sym'):将存放A/B值的sym列层级从列索引移动到行索引,此时行索引顺序为[date, sym]
  • swaplevel:交换两个行索引的顺序,得到你需要的[sym, date]层级结构
  • sort_index():按索引排序,保证同一个sym下的date按时间顺序排列

如果没有给列设置层级名,也可以直接用层级编号操作,层级从左到右从0开始计数,对应代码:

result = df.stack(level=1).swaplevel(0,1).sort_index()
# 给结果的行索引设置名称,方便后续分组操作
result.index.names = ['sym', 'date']

后续分组操作示例

处理完成后你可以直接基于sym层级做分组计算,不需要拆分DataFrame:

# 按sym分组计算x1的平均值
sym_x1_mean = result.groupby(level='sym')['x1'].mean()

# 按sym分组新增衍生列:x1与x2的差值
result['x_diff'] = result.groupby(level='sym').apply(lambda df: df['x1'] - df['x2']).droplevel(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 23:27:04