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



嗨,我正在寻找一个步骤来迭代以下内容:

  1. Data_Dec2019.xlsx
  2. Data_Mar2020.xlsx
  3. Data_Jun2020.xlsx
  4. 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个数据与不同的快照,想迭代的过程。试着浏览社区帖子,但大多是一个复杂的问题。请注意,数据处理代码更长更复杂,但为了说明目的,我分享了简化版本,只是为了了解是否有一种简单的方法来做到这一点。

谢谢你的帮助。

创建一个函数来处理文件,并使用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)

最新更新