如何在Pandas中将多级索引转换为列名后缀?
将多级列索引转换为带后缀的单级列索引
问题说明
现有如下Pandas DataFrame:
import pandas as pd df = pd.DataFrame(columns=pd.MultiIndex.from_product([['X', 'Y'], ['L', 'R']]), data=[[1, 5, 2, 6], [3, 7, 4, 8]])
其列是双层索引结构:
X Y L R L R ----------------- 0 1 5 2 6 1 3 7 4 8
需要将上层列索引作为后缀添加到下层列名后,得到单级列索引的结果:
L_X R_X L_Y R_Y ---------------------- 0 1 5 2 6 1 3 7 4 8
实现方案
方案1:列表推导式直接拼接
遍历多级列索引的元组,按下层_上层的格式拼接成新列名:
df.columns = [f"{lower}_{upper}" for upper, lower in df.columns]
方案2:map函数配合lambda表达式
用map批量处理每个列索引元组,提取并拼接索引值:
df.columns = df.columns.map(lambda idx: f"{idx[1]}_{idx[0]}")
方案3:str.join灵活拼接(支持自定义分隔符)
通过反转索引元组顺序,再用指定分隔符连接,适合需要调整分隔符的场景:
# 下划线分隔,也可替换为其他字符比如'-' df.columns = df.columns.map(lambda idx: "_".join(reversed(idx)))
执行任意一种方案后,DataFrame的列都会转换为目标格式,数据保持不变。
内容的提问来源于stack exchange,提问作者PeeteKeesel
相关产品推荐
相关产品推荐

