使用Python Pandas读取多表头.xlsx文件时,部分'<'被转为'<.1'的问题
多层表头重复列名自动重命名问题解析与解决
问题原因
当你用pd.read_excel(file, header=[0,1])读取双层表头的Excel文件时,Pandas会确保MultiIndex的每一组列标签都是唯一的。如果某一层级存在重复的列名(比如你案例中第二层的两个<),Pandas会自动为后续重复的列名添加.数字后缀(比如.1),以此避免索引冲突。
解决方法
1. 读取时禁用自动重命名
通过设置mangle_dupe_cols=False参数,让Pandas保留原始重复列名,但注意这种情况下MultiIndex会存在重复项,后续直接通过列名索引可能返回多列,需谨慎使用:
df = pd.read_excel(file, header=[0,1], mangle_dupe_cols=False)
2. 读取后手动修正列名
读取完成后,遍历MultiIndex列名,将自动添加后缀的<.1改回<:
# 生成新的列名元组列表 new_columns = [] for level1, level2 in df.columns: if level2 == '<.1': new_columns.append((level1, '<')) else: new_columns.append((level1, level2)) # 更新DataFrame的列名 df.columns = pd.MultiIndex.from_tuples(new_columns)
3. 提前修改Excel文件(推荐)
如果有权限修改源Excel文件,可以给重复的表头添加区分标识,比如将两个<分别改为< AW和< OW,这样读取时就不会触发自动重命名逻辑,列名也更具可读性。
内容的提问来源于stack exchange,提问作者Mitchell van Zuylen
相关产品推荐
相关产品推荐

