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

如何实现Python脚本自动批量处理多组跨文件夹Excel文件对?

批量处理成对Excel文件的Python实现

核心思路

遍历其中一个文件夹的Excel文件,提取文件的配对标识(如示例中的_1、_2),自动匹配另一个文件夹中对应的文件,重复执行读取、左连接合并、保存结果的流程,实现批量自动化处理。

完整实现代码

import pandas as pd
import os
from glob import glob

# 定义文件夹路径(根据实际路径修改)
folder_a = "folderA"
folder_b = "folderB"
output_folder = "merged_results"

# 创建输出文件夹(不存在则自动创建)
os.makedirs(output_folder, exist_ok=True)

# 获取folderA中所有Excel文件的完整路径
a_files = glob(os.path.join(folder_a, "*.xlsx"))

for a_file_path in a_files:
    # 提取文件名(移除路径和后缀)
    a_file_name = os.path.basename(a_file_path).replace(".xlsx", "")
    # 提取配对标识(针对fileA_1这类格式,分割后取最后一段)
    pair_id = a_file_name.split("_")[-1]
    # 构造folderB中对应文件的路径
    b_file_name = f"fileB_{pair_id}.xlsx"
    b_file_path = os.path.join(folder_b, b_file_name)
    
    # 检查对应文件是否存在,避免报错
    if not os.path.exists(b_file_path):
        print(f"警告:未找到对应文件 {b_file_path},跳过当前配对")
        continue
    
    # 读取Excel文件为DataFrame
    df_a = pd.read_excel(a_file_path)
    df_b = pd.read_excel(b_file_path)
    
    # 执行左连接合并操作
    merged_df = df_a.merge(df_b, how="left", indicator=True)
    # 打印当前合并结果的行数(可选,用于进度追踪)
    print(f"配对 {pair_id} 合并完成,共 {merged_df.shape[0]} 行")
    
    # 保存合并结果到输出文件夹
    output_file_path = os.path.join(output_folder, f"merged_{pair_id}.xlsx")
    with pd.ExcelWriter(output_file_path) as writer:
        merged_df.to_excel(writer, sheet_name="comparison", index=False)

关键细节说明

  • 文件匹配逻辑:针对fileA_*.xlsx和fileB_*.xlsx的命名格式,通过分割文件名提取*部分作为配对标识。如果你的文件名格式不同,只需修改b_file_name的构造规则即可适配。
  • 容错处理:增加文件存在性检查,避免因缺失对应文件导致脚本中断。
  • 结果管理:用独立的输出文件夹存放合并结果,避免与原文件混淆。
  • 扩展性:如果需要将所有合并结果存入同一个Excel的不同工作表,只需将pd.ExcelWriter的路径改为固定文件名,循环中指定不同的工作表名称即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:10:46