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

如何用Python Pandas将多层索引列DataFrame转换为长表?

解决方案

步骤1:读取带多层表头的Excel文件

原始表格存在双层表头(季度+指标),读取时需指定header=[0,1]识别多层列索引:

import pandas as pd

# 替换为你的Excel文件路径
df = pd.read_excel('your_file.xlsx', header=[0, 1])
# 将第一列(地区列)重命名并设为索引
df.rename(columns={df.columns[0]: '地区'}, inplace=True)
df.set_index('地区', inplace=True)

步骤2:堆叠多层列索引转换为长格式

用stack()处理多层列,将季度维度从列转为行,这比wide_to_long更适配多层索引场景:

# 堆叠第一层列索引(季度),将其转为行维度
df_stacked = df.stack(level=0).reset_index()
# 重命名列匹配目标格式
df_stacked.rename(columns={'level_1': '季度'}, inplace=True)
# 调整列顺序至目标格式
final_df = df_stacked[['地区', '季度', '销售额', '利润']]

为什么wide_to_long失效?

wide_to_long要求列名遵循统一的前缀+后缀格式(如Q1_销售额),但你的原始表格是多层列索引结构,并非扁平化命名格式,无法匹配该函数的要求;而stack()可直接处理多层索引的宽表转长表需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:50:28