Объединение на основе нескольких столбцов всех файлов Excel из каталога в Python - PullRequest
0 голосов
/ 20 апреля 2020

Скажем, у меня есть фрейм данных df и каталог ./, в котором есть следующие файлы excel:

path = './'
for root, dirs, files in os.walk(path):
    for file in files:
        if file.endswith(('.xls', '.xlsx')):
            print(os.path.join(root, file))
            # dfs.append(read_dfs(os.path.join(root, file)))
# df = reduce(lambda left, right: pd.concat([left, right], axis = 0), dfs)

Out:

df1.xlsx,
df2.xlsx,
df3.xls
...

Я хочу объединить df со всеми файлами из path на основе общих столбцов date и city. Это работает со следующим кодом, но это не достаточно кратко.

Итак, я поднимаю вопрос об улучшении кода, спасибо.

df = pd.merge(df, df1, on = ['date', 'city'], how='left')
df = pd.merge(df, df2, on = ['date', 'city'], how='left')
df = pd.merge(df, df3, on = ['date', 'city'], how='left')
...

Ссылка:

pandas трехстороннее объединение нескольких фреймов данных в столбцах

1 Ответ

0 голосов
/ 23 апреля 2020

Может работать следующий код:

from functools import reduce

dfs = [df0, df1, df2, dfN]
df_final = reduce(lambda left, right: pd.merge(left, right, on=['date', 'city']), dfs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...