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

合并Excel文件后输出格式异常求助:DataFrame第2、3行嵌入字符串

问题根源

你代码的核心问题是:使用sheet_name=None读取Excel文件时,返回的是字典类型(键为工作表名称,值为对应工作表的DataFrame),但你错误地用空DataFrame的append()方法去拼接这个字典,导致最终的df中出现了嵌套的DataFrame对象,写入Excel时就会出现数据异常。

修正方案

我们需要按工作表维度来合并数据:先创建一个字典,用来收集所有Excel文件中同名工作表的数据,最后再将每个工作表的所有数据合并后写入Excel。

修正后的代码

import pandas as pd
import os

input_path = 'C:/Users/Admin/Downloads/Test/'
output_file = os.path.join(input_path, 'combined.xlsx')

# 初始化字典,用于存储每个工作表的所有数据
sheet_data = {}

# 遍历目录下的所有文件
for file in os.listdir(input_path):
    if file.endswith('.xlsx'):
        file_path = os.path.join(input_path, file)
        # 读取当前文件的所有工作表(返回字典)
        excel_sheets = pd.read_excel(file_path, sheet_name=None)
        # 遍历每个工作表,收集数据
        for sheet_name, df in excel_sheets.items():
            if sheet_name not in sheet_data:
                sheet_data[sheet_name] = []
            sheet_data[sheet_name].append(df)

# 合并每个工作表的所有数据,并写入Excel
with pd.ExcelWriter(output_file, engine='xlsxwriter') as writer:
    for sheet_name, df_list in sheet_data.items():
        # 合并当前工作表的所有数据
        combined_df = pd.concat(df_list, ignore_index=True)
        # 写入工作表
        combined_df.to_excel(writer, sheet_name=sheet_name, index=False)

关键改动说明

  1. 按工作表收集数据:用sheet_data字典替代原有的空DataFrame,确保每个工作表的数据被单独收集,避免嵌套问题。
  2. 安全路径拼接:使用os.path.join()拼接文件路径,避免因系统路径分隔符差异导致的错误。
  3. 使用pd.concat替代append:append已在pandas 2.0+版本中被弃用,pd.concat是更稳定的合并方式。
  4. 上下文管理器:用with语句管理ExcelWriter,无需手动调用save(),代码更简洁安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:15:31