Pandas如何将DataFrame行值转换为MultiIndex多级列头
实现方法
你之前的写法没有生效,是因为缺少了将行索引转为列层级、调整层级顺序的步骤,正确代码如下:
首先构造示例数据(你已有原df可以跳过这步):
import pandas as pd # 模拟你提供的原始DataFrame data = { "mem": [1, 4], "Admits": [2, 5], "AdmPerK": [3, 6] } df = pd.DataFrame(data, index=pd.Index(["JAN", "FEB"], name="Month"))
核心转换逻辑:
# 转换为目标结构 result = df.unstack().swaplevel().to_frame().T # 可选:重置索引去掉默认生成的索引名 result = result.reset_index(drop=True)
代码逻辑说明:
df.unstack():将行索引的月份值转为列索引的第二层级,同时将原列名转为第一层级,输出多级索引的Seriesswaplevel():调换两级列索引的顺序,让月份作为上层列头,指标(mem/Admits/AdmPerK)作为下层列头to_frame().T:将多级索引Series转为DataFrame后转置,得到仅一行数据的目标结构
打印result即可得到你需要的输出样式。
内容的提问来源于stack exchange,提问作者John Taylor
相关产品推荐
相关产品推荐

