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

Pandas read_excel中skiprows与headers的执行顺序问询

Pandas read_X系列函数中skiprows与headers的执行顺序

核心结论

skiprows操作先于headers设置表头执行。也就是说,Pandas会先根据skiprows参数跳过原始文件中的指定行,再从剩余的行里,按照headers参数的定义来确定表头行(包括多级索引表头)。

逻辑验证与场景适配

针对你遇到的「表头行前、表头行与数据行之间存在空行」的场景,我们可以通过具体示例验证这个执行顺序:

假设你的Excel文件结构(行号从0开始计数)如下:

  • 行0:空行
  • 行1:多级表头第一行(如「季度」「年度」)
  • 行2:空行
  • 行3:多级表头第二行(如「Q1」「Q2」「2023」「2024」)
  • 行4及以后:数据行

此时你需要跳过行0和行2,再用行1和行3作为多级表头,对应的代码(以read_csv为例,逻辑和read_excel完全一致)如下:

import pandas as pd
from io import StringIO

# 模拟上述文件结构
data = """
,
季度,年度,,
,
Q1,Q2,2023,2024
150,200,5000,6000
220,280,5500,6200
"""

# 先跳过原始行0、2,再取剩余行的第0、1行作为多级表头
df = pd.read_csv(StringIO(data), skiprows=[0, 2], header=[0, 1])
print(df)

执行后会正确识别多级表头,且数据行无空行干扰:

季度  年度     
   Q1   Q2  2023  2024
0  150  200  5000  6000
1  220  280  5500  6200

逻辑合理性说明

这个执行顺序符合数据加载的常规逻辑:skiprows属于行过滤预处理,目的是先剔除无关的空行、注释行等;而headers是数据结构定义,需要基于已经过滤后的有效行来指定表头位置。因此Pandas会先完成行过滤,再确定表头区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:32:38