Python pandas读取Excel时合并含'Unnamed'的多级表头问题
解决方案
你可以通过遍历MultiIndex列的每个层级,过滤含Unnamed的无效项后重新生成列名,实现需求,完整代码如下:
import pandas as pd # 你原有的读取代码 df = pd.ExcelFile(r'file_path/excel_file.xlsx') df = df.parse(sheet_name, header = [0, 1, 2]) # 定义表头清洗函数 def clean_multi_header(col_tuple): # 过滤所有含Unnamed的层级字段 valid_items = [item for item in col_tuple if 'Unnamed' not in str(item)] # 单个有效字段直接返回,多个可自定义分隔符拼接 return valid_items[0] if len(valid_items) == 1 else '_'.join(valid_items) # 应用到所有列名 df.columns = df.columns.map(clean_multi_header)
效果说明
对于你提到的Name、ID、Test mode类列,原三级表头结构仅一个层级有有效值、其余都是Unnamed,清洗后会直接保留对应有效值作为列名;如果存在多层级都有有效内容的列,会自动用下划线拼接所有有效层级,避免列名重复。
可选调整
如果需要保留三层表头结构,仅将无效的Unnamed替换为空值,可使用如下代码:
df.columns = pd.MultiIndex.from_tuples( [tuple(item if 'Unnamed' not in str(item) else '' for item in col) for col in df.columns] )
内容的提问来源于stack exchange,提问作者hackerboi1337
相关产品推荐
相关产品推荐

