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

Excel处理程序忽略各工作表首行数据,从第二行写入输出文件的问题

Excel处理程序丢失首行数据的修复方案

问题描述

当前Excel处理代码存在异常:处理输入文件时,会忽略每个工作表的第一行数据,仅从第二行开始写入最终输出文件。

问题根源

代码中使用input_excel.parse(sheet_name)读取工作表时,pandas默认将文件的第一行识别为DataFrame的列名(header=0是默认值),导致原文件的第一行数据被当作表头,没有进入后续的数据处理流程,最终丢失。

修复方案

修改读取工作表的逻辑,指定header=None参数,让pandas将所有行都视为数据行,不自动将第一行设为列名。如果原文件确实包含表头,可以在读取后手动设置列名,再进行后续处理。

修改后的完整代码

import pandas as pd

def process_sheet(sheet_name, sheet_data):
    result_rows = []

    # 遍历所有数据行(包括原文件的第一行)
    for prefix in sorted(set(row[1] // 10000 for row in sheet_data.itertuples(index=False)), key=str):
        rows_with_prefix = sheet_data[sheet_data.iloc[:, 1] // 10000 == int(prefix)]

        if not rows_with_prefix.empty:
            result_row = [None] * len(sheet_data.columns)
            result_row[1] = int(prefix)  # 在第二列设置3位前缀值
            result_rows.extend([result_row] + rows_with_prefix.values.tolist())

    return pd.DataFrame(result_rows)

def process_excel(input_filename, output_filename):
    input_excel = pd.ExcelFile(input_filename)
    writer = pd.ExcelWriter(output_filename, engine='xlsxwriter')

    for sheet_name in input_excel.sheet_names:
        # 修改点:添加header=None,禁止将第一行识别为列名
        sheet_data = input_excel.parse(sheet_name, header=None)
        processed_data = process_sheet(sheet_name, sheet_data)

        # 写入文件时不输出表头(保持原有逻辑)
        processed_data.to_excel(writer, sheet_name, index=False, header=False)

    writer._save()

if __name__ == "__main__":
    input_file = "output_data.xlsx"
    output_file = "final.xlsx"
    process_excel(input_file, output_file)

关键修改说明

  • input_excel.parse(sheet_name, header=None):通过header=None参数,告诉pandas读取所有行作为数据,不将第一行解析为列名,这样原文件的第一行数据会被包含在sheet_data中参与后续处理。
  • 如果你的输入文件原本有表头行,需要额外处理:先读取表头,再从第二行开始处理数据。示例如下:
    # 读取表头和数据
    sheet_data_with_header = input_excel.parse(sheet_name)
    header = sheet_data_with_header.columns.tolist()
    # 提取所有数据行(包括原第一行数据)
    sheet_data = sheet_data_with_header.reset_index(drop=True)
    
    后续处理时可以根据需求将表头写入输出文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:00:15