#python #pandas #sas-macro
Вопрос:
Привет, я ищу шаг, чтобы повторить следующее:
- Data_Dec2019.xlsx
- Data_Mar2020.xlsx
- Data_Jun2020.xlsx
- …
- …
- 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 данных с различными моментальными снимками, я хотел бы повторить процесс. Попытался просмотреть сообщение сообщества, но в основном это были сложные вопросы. Обратите внимание, что код обработки данных длиннее и сложнее, но для иллюстрации я поделился упрощенной версией, чтобы понять, есть ли простой способ сделать это.
Спасибо за помощь.
Ответ №1:
Создайте функцию для обработки файлов и перебора имен файлов с 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)