如何运行同样的代码输入不同的文件输出不同的文件?与 SAS 宏相同

How to run the same code with input different files and output different files? Same as SAS Macro

您好,我正在寻找迭代以下内容的步骤:

  1. Data_Dec2019.xlsx
  2. Data_Mar2020.xlsx
  3. Data_Jun2020.xlsx
  4. ...
  5. ...
  6. Base_Data.xlsx

代码如下:

#Importing package
import pandas as pd

df_base = pd.read_excel(r'...\Base_Data.xlsx')

df_data = pd.read_excel(r'...\Data_Jun2020.xlsx')

#Data Cleaning for Base
df_base = df_base.sort_values(by='CustomerNumber')

df_base = df_base.drop_duplicates('CustomerNumber')


#Data Cleaning for Data
df_data = df_data.groupby (['CustomerNumber'])['Amount'].sum().reset_index()

#Map both data
df_mapped = pd.merge (df_base, df_data, on = "CustomerNumber", how = "inner")

#Export Data
df_mapped.to_excel(r'...\Merged_June2020.xlsx')

我有超过 10 个不同快照的数据,想迭代这个过程。试图查看社区 post,但主要是一个复杂的问题。请注意,数据处理代码更长更复杂,但为了说明起见,我分享了简化版本,以了解是否有更简单的方法。

感谢帮助。

创建一个函数来处理文件并使用 pathlib 遍历文件名。 修改以下代码:

import pathlib

data_dir = 'file/path/to/data'

# load base data
df_base = pd.read_excel(r'...\Base_Data.xlsx') \
            .sort_values(by='CustomerNumber') \
            .drop_duplicates('CustomerNumber')


# load, process and export a file
def process_data(file):
    df_data = pd.read_excel(file) \
                .groupby (['CustomerNumber'])['Amount'] \
                .sum().reset_index()

    df_base.merge(df_data, on="CustomerNumber") \
           .to_excel(file.parent / f'Merged_{file.name}')


for file in data_dir.glob('Data_*.xlsx'):
   process_data(file)