使用Pandas合并多索引列名时如何避免数据丢失?
Pandas多索引列合并为单层列名的解决方案
问题描述
现有带多层列索引的DataFrame:
cn_positions cn_positions cn_positions Date Q1.22 Q1.23 Q1.24 ID AA 73 87 104 BB 0 0 13 CC 0 20 62 CC 0 0 11
需要将多层列合并为单层列名(格式如cn_positions_Q1.22),目标格式:
cn_positions_Q1.22 cn_positions_Q1.23 cn_positions_Q1.24 ID AA 73 87 104 BB 0 0 13 CC 0 20 62 CC 0 0 11
错误原因分析
你之前使用的pivot_table方案会对重复的ID行进行聚合(默认采用均值计算),导致原始多行数据被合并,从而丢失部分原始值。此外,unstack()操作打乱了原有列结构,进一步导致Date列的取值无法正确映射。
可行解决方案
直接对多层列索引进行字符串拼接,无需修改数据结构:
# 合并多层列名,用下划线连接 df.columns = ['_'.join(col) for col in df.columns] # 可选:移除列索引的名称(消除原多层索引的标识) df.columns.name = None
执行后即可得到目标格式的DataFrame,完整保留原始数据的行结构和所有值。
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

