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

Python读取Excel时如何批量去除文件顶部冗余标题表头?

批量合并带冗余标题行Excel的可行方案

不用手动逐文件删除标题行,pd.read_excel原生支持读取阶段跳过指定行,配合路径遍历就能批量完成清洗+合并,全程不需要修改原始Excel文件。

固定冗余行数场景(12个文件结构一致,优先用这个方案)

  • 先数清楚单个样例文件顶部的冗余行总数:比如前2行是无用的大标题、说明文字,真正的列名在第3行,记住这个行数即可
  • 遍历存放所有Excel的目标文件夹,读取每个文件时直接传入跳过行参数,最后统一拼接
  • 可选新增来源文件列,后续分析时如果发现数据异常可以快速定位到原文件

可直接运行的参考代码:

import pandas as pd
from pathlib import Path

# 按需修改下面两个配置项
EXCEL_FOLDER_PATH = Path("替换成你存放12个Excel文件的本地文件夹路径")
SKIP_ROW_COUNT = 2  # 替换成你实际要跳过的顶部冗余行数,比如前2行无用就填2

df_list = []
# 遍历文件夹下所有xlsx格式文件,如果是xls格式就把glob匹配规则改成*.xls
for excel_file in EXCEL_FOLDER_PATH.glob("*.xlsx"):
    temp_df = pd.read_excel(
        excel_file,
        header=SKIP_ROW_COUNT,  # 自动跳过前N行,将第SKIP_ROW_COUNT行作为列名
        engine="openpyxl"
    )
    temp_df["source_file"] = excel_file.name  # 标记数据来源文件
    df_list.append(temp_df)

# 合并为总数据表,直接用于后续分析
merged_df = pd.concat(df_list, ignore_index=True)

冗余行数不固定的适配方案

如果后续遇到同类型文件但每个文件冗余标题行数不一致,没法写死跳过值,可以通过固定列名匹配表头位置,自动裁剪冗余内容:

def read_excel_with_auto_skip(file_path, mark_column):
    """
    自动识别表头位置读取Excel
    :param file_path: Excel文件路径
    :param mark_column: 真实表头中一定存在的列名,比如"订单编号""销售额"这类固定字段
    """
    # 先不指定表头全量读入
    raw = pd.read_excel(file_path, header=None, dtype=str)
    # 定位包含标记列的行索引
    header_pos = raw[raw.apply(lambda row: row.str.contains(mark_column, na=False).any(), axis=1)].index[0]
    # 裁剪冗余行,重新设置列名
    cleaned = raw.iloc[header_pos+1:].reset_index(drop=True)
    cleaned.columns = raw.iloc[header_pos].tolist()
    return cleaned

调用时只需要传入一个确定存在的真实列名即可,不需要手动数每个文件的冗余行数。

注意:如果读取时遇到合并单元格导致的列名空值问题,可以在读取后用ffill()补全列名,或者在read_excel里传入usecols参数指定需要读取的列范围,进一步减少无效数据读入。

内容的提问来源于stack exchange,提问作者Islam Ayman Ellawendy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 13:01:20