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

Pandas导入双层表头.xlsx时跳过2行后表头读取异常问题

Pandas读取双层表头Excel文件时表头识别异常的原因

问题现象

使用Pandas导入带双层表头的.xlsx文件时,设置skiprows=[0,1]跳过前2行,第一层表头无法正确识别:仅对应列的第一列被分配header1、header2,其余列显示为Unnamed;但设置skiprows=[0]仅跳过1行时,双层表头能正常读取。

测试代码

import pandas as pd
# Python 3.12.7
# pandas 2.2.2
# openpyxl 3.1.5

df = pd.read_excel('2_rows_to_skip.xlsx', skiprows=[0,1], header=[0,1])
df2 = pd.read_excel('1_row_to_skip.xlsx', skiprows=[0], header=[0,1])
   
for col in df.columns:
    print(col)
    
print('-------------------')

for col in df2.columns:
    print(col)

输出结果

('header1', 'A')
('Unnamed: 1_level_0', 'B')
('Unnamed: 2_level_0', 'C')
('header2', 'A')
('Unnamed: 4_level_0', 'B')
('Unnamed: 5_level_0', 'C')
-------------------
('header1', 'A')
('header1', 'B')
('header1', 'C')
('header2', 'A')
('header2', 'B')
('header2', 'C')

原因分析

核心问题出在Excel文件的合并单元格处理逻辑:

  • 双层表头的第一层单元格是跨列合并状态(比如header1合并了A、B、C三列的表头行,header2合并了对应下一组的三列)。
  • 当设置skiprows=[0,1]时,Pandas跳过了包含合并单元格信息的前两行,直接从第3行读取表头。此时合并单元格的跨列关联信息已丢失,Pandas只会读取每个单元格的实际值,未被填充的合并单元格区域会被识别为空值,最终显示为Unnamed前缀的名称。
  • 而设置skiprows=[0]时,仅跳过无关行,保留了包含合并单元格结构的表头行,Pandas能正确解析合并单元格对应的跨列归属,因此双层表头可以正常识别。

内容的提问来源于stack exchange,提问作者ZetDen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:29:56