У меня есть, вероятно, сотни или тысячи небольших файлов excel с скобкой в один фрейм данных pandas.
Прежде чем объединить их, мне нужно указать, из какой категории они происходят.
Вот моя таблица ссылок df
Dataframe_name Path Sheet
45 finance_auditing Finance - Accounting/TopSites-Fin... Aggregated_Data_for_Time_Period
46 finance_lending Finance - Banking/TopSites-... Aggregated_Data_for_Time_Period
Что я сделал Dataframe_name
столбец имени заполняется вручную, но я ожидал, что использую справочную таблицу
finance_auditing = pd.read_excel('Finance - Accounting/TopSites-Fin... ','Aggregated_Data_for_Time_Period')
finance_lending = pd.read_excel('Finance - Banking/TopSites-... ','Aggregated_Data_for_Time_Period')
finance_auditing['Dataframe_name'] = 'finance_auditing'
finance_lending['Dataframe_name'] = 'finance_lending'
dF_all = pd.concat([pd.read_excel(path, sheet_name=sheet)
for path, sheet in zip(df.Path, df.Sheet)])
Проблема в том, что у меня есть сотни файлов для чтения, и мне нужно добавить их все
Почему это должно быть ручным? Уже есть таблица ссылок
@NabihBawazir А. Вот где была путаница. Не знал, что у вас уже создана справочная таблица.
@MayankPorwal Думаю, мой вопрос недостаточно лаконичен (до редактирования)
Это было бы довольно просто, вы можете assign
динамически устанавливать флаг для каждой итерации:
pd.concat([pd.read_excel(path, sheet_name=sheet).assign(df_name=name)
for name, path, sheet in df.to_numpy()])
Где находится df[''Dataframe_name']?
Объединение всех файлов Excel в один df не должно быть проблемой. Но вам нужно будет сопоставить
Dataframe_name
с каждым файлом Excel, что, я думаю, будет ручным процессом. Если у вас есть это, все это можно сделать в одном цикле for. Проверьтеthis
.