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

为何pandas.read_excel()会跳过Excel工作表的前两行?

问题描述

我在Excel工作表中有特定格式的数据,想用pandas.read_excel将其读取为DataFrame,但该函数自动跳过了工作表的前两行。手动调整Excel表格位置后,函数能生成预期的DataFrame,请问该如何解决这个问题?

使用的代码

import pandas as pd
import tkinter as Tk
from tkinter.filedialog import askopenfilename
from tabulate import tabulate

print("选择目标源文件:")
Tk.Tk().withdraw()
path1 = askopenfilename()  # 目标文件的路径

source_workbook = pd.read_excel(path1, header=1, engine='openpyxl')
print(tabulate(source_workbook, headers='firstrow'))

现象说明

  • 执行上述代码后,读取结果自动跳过了工作表的前两行
  • 手动调整Excel表格的位置后,能够得到符合预期的DataFrame

解决方法

出现这种问题,大多是因为原Excel的前两行存在隐藏行、合并单元格格式异常,或是pandas自动识别空行/无效行时出现误判,可通过以下几种方式处理:

  • 精准控制读取范围
    不要仅依赖header参数,改用skiprows和usecols明确指定读取的行和列:

    # 若表头在第2行(索引从0开始),读取从第3行开始的数据
    source_workbook = pd.read_excel(path1, header=1, skiprows=None, engine='openpyxl')
    # 若前两行都是有效内容不想跳过,先不设置表头,后续手动指定
    source_workbook = pd.read_excel(path1, header=None, engine='openpyxl')
    # 手动设置表头示例
    source_workbook.columns = ["列名1", "列名2", "列名3", ...]
    
  • 清理Excel格式问题

    • 检查并取消前两行的隐藏设置
    • 拆分前两行中存在的跨多行合并单元格
    • 确认前两行的单元格没有特殊格式(比如白色字体导致看似为空但实际有内容)
  • 强制读取单元格内容
    用converters参数强制转换单元格内容,避免pandas误判为空行:

    # 示例:强制将前10列转换为字符串类型,根据实际列数调整
    source_workbook = pd.read_excel(path1, header=1, engine='openpyxl', converters={col: str for col in range(10)})
    
  • 锁定有效列范围
    如果Excel存在大量空列导致识别错误,指定需要读取的列:

    # 示例:读取A到E列
    source_workbook = pd.read_excel(path1, header=1, engine='openpyxl', usecols="A:E")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:52:53