【问题标题】:Merge based on multiple columns of all excel files from a directory in Python基于Python目录中所有excel文件的多列合并
【发布时间】:2020-08-02 11:35:03
【问题描述】:

假设我有一个数据框 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)

输出:

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

我想基于公共列 datecitydf 与来自 path 的所有文件合并。它适用于以下代码,但不够简洁。

所以我提出一个改进代码的问题,谢谢。

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 three-way joining multiple dataframes on columns

【问题讨论】:

    标签: python-3.x pandas dataframe merge


    【解决方案1】:

    以下代码可能有效:

    from functools import reduce
    
    dfs = [df0, df1, df2, dfN]
    df_final = reduce(lambda left, right: pd.merge(left, right, on=['date', 'city']), dfs)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2023-03-19
      • 2020-07-23
      • 2019-01-21
      • 2018-10-26
      • 1970-01-01
      相关资源
      最近更新 更多