假设我有一个数据帧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
...我想基于公共列date和city将df与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')
...参考资料:
发布于 2020-04-23 19:07:53
以下代码可能会起作用:
from functools import reduce
dfs = [df0, df1, df2, dfN]
df_final = reduce(lambda left, right: pd.merge(left, right, on=['date', 'city']), dfs)https://stackoverflow.com/questions/61314450
复制相似问题