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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:54:04