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

如何用Python合并多份Excel表格并添加来源文件名列

批量合并Excel表格并添加来源文件名列

你的初始代码直接用open()读取Excel文件是行不通的——Excel属于二进制格式文件,普通文本读取方式无法解析内容。下面是用pandas实现批量合并并添加来源文件名的完整方案:

步骤1:安装依赖库

首先确保安装了处理Excel所需的库:

pip install pandas openpyxl
  • pandas负责数据处理与合并
  • openpyxl用于读取和写入.xlsx格式文件(如果是.xls格式,需要额外安装xlrd)

步骤2:完整实现代码

import os
import pandas as pd

# 目标文件夹路径(Windows路径用原始字符串避免转义问题)
file_path = r"C:\excel files"
# 初始化空DataFrame存储合并后的数据
merged_data = pd.DataFrame()

# 遍历文件夹中的所有文件
for filename in os.listdir(file_path):
    # 只处理Excel格式文件,过滤其他类型文件
    if filename.endswith((".xlsx", ".xls")):
        # 拼接完整文件路径,避免路径错误
        full_path = os.path.join(file_path, filename)
        # 读取Excel文件(默认读取第一个工作表,指定sheet可加sheet_name参数)
        df = pd.read_excel(full_path)
        # 新增列,填入当前文件名作为数据来源标识
        df["数据来源文件"] = filename
        # 将当前文件数据追加到总DataFrame
        merged_data = pd.concat([merged_data, df], ignore_index=True)

# 将合并结果保存为新Excel文件
merged_data.to_excel(r"C:\excel files\合并结果.xlsx", index=False, engine="openpyxl")

关键代码说明

  • os.path.join():自动拼接完整文件路径,避免手动拼接导致的跨系统路径格式问题
  • endswith((".xlsx", ".xls")):过滤非Excel文件,防止读取无关文件报错
  • pd.concat():实现多表格纵向合并,ignore_index=True重置合并后的索引,避免重复索引
  • 新增来源列:直接通过DataFrame新列赋值实现,简洁高效

额外优化建议

  • 若文件夹包含子文件夹,改用os.walk()遍历所有层级的Excel文件:
    for root, dirs, files in os.walk(file_path):
        for filename in files:
            if filename.endswith((".xlsx", ".xls")):
                full_path = os.path.join(root, filename)
                # 后续读取、添加列、合并逻辑同上
    
  • 处理多工作表的Excel文件:
    df_dict = pd.read_excel(full_path, sheet_name=None)
    for sheet_name, sheet_data in df_dict.items():
        sheet_data["数据来源文件"] = f"{filename}-{sheet_name}"
        merged_data = pd.concat([merged_data, sheet_data], ignore_index=True)
    
  • 处理超大Excel文件时,用分块读取避免内存溢出:
    chunk_iter = pd.read_excel(full_path, chunksize=10000)
    for chunk in chunk_iter:
        chunk["数据来源文件"] = filename
        merged_data = pd.concat([merged_data, chunk], ignore_index=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:25:01