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

如何用Python实现类似SAS Macro的多Excel文件批量处理流程

实现批量迭代处理的极简方案

核心逻辑是把仅需执行一次的Base数据预处理放在循环外,仅把单业务数据文件的处理逻辑放在循环内执行,避免重复计算,同时自动匹配导出文件名。

完整可运行代码

# 导入依赖包
import pandas as pd
import os

# --------------------------
# 1. 仅执行一次Base数据预处理
# --------------------------
base_path = r'替换为你的Base_Data.xlsx实际路径'
df_base = pd.read_excel(base_path)
df_base = df_base.sort_values(by='CustomerNumber')
df_base = df_base.drop_duplicates('CustomerNumber')

# --------------------------
# 2. 获取所有待处理的业务数据文件列表
# --------------------------
# 方法1:手动指定文件列表(文件数量少的场景)
# data_files = [
#     r'...\Data_Dec2019.xlsx',
#     r'...\Data_Mar2020.xlsx',
#     r'...\Data_Jun2020.xlsx',
#     # 新增其他文件路径即可
# ]

# 方法2:自动扫描目录下所有Data_开头的xlsx文件(文件数量多的场景,推荐)
data_dir = r'替换为你存放所有Data_xxx.xlsx的文件夹路径'
data_files = [os.path.join(data_dir, f) for f in os.listdir(data_dir) if f.startswith('Data_') and f.endswith('.xlsx')]

# --------------------------
# 3. 循环处理每个文件
# --------------------------
export_dir = r'替换为你想要存放导出结果的文件夹路径'
for file_path in data_files:
    # 读取单个业务数据文件
    df_data = pd.read_excel(file_path)
    
    # 业务数据清洗(你的原有逻辑,后续有调整直接改这部分即可)
    df_data = df_data.groupby(['CustomerNumber'])['Amount'].sum().reset_index()
    
    # 关联合并
    df_mapped = pd.merge(df_base, df_data, on="CustomerNumber", how="inner")
    
    # 自动生成导出文件名:提取原文件的时间标识,比如Data_Dec2019.xlsx → Dec2019
    file_name = os.path.basename(file_path)
    time_tag = file_name.replace('Data_', '').replace('.xlsx', '')
    export_path = os.path.join(export_dir, f'Merged_{time_tag}.xlsx')
    
    # 导出结果
    df_mapped.to_excel(export_path, index=False)

优化建议

如果你的实际数据处理逻辑较长,可以将业务数据清洗的部分封装为独立函数,后续维护仅需调整函数内部逻辑即可,示例如下:

def clean_data(df_raw):
    # 把你所有的复杂清洗逻辑放在这里
    df_clean = df_raw.groupby(['CustomerNumber'])['Amount'].sum().reset_index()
    # 其他清洗步骤...
    return df_clean

# 循环内调用即可
df_data = clean_data(pd.read_excel(file_path))

内容的提问来源于stack exchange,提问作者Abdul Mateen Hashim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:57:02