首页 > 解决方案 > 如何使用pandas根据列ID将多个csv文件合并为1个文件

问题描述

我有 4 个包含数千行的 CSV 文件,所以我将在这里快速复制这些文件。

'zip','econ_risk_score'
'22011','5'

'zip','food_risk_score'
'22011','2'

'zip','healthlit_risk_score'
'22011','4'

'zip','housing_risk_score'
'22011','5'

我的结果表应该是这样的

'zip','econ_risk_score','food_risk_score','healthlit_risk_score','housing_risk_score'
'22011','5','2','4','5'

到目前为止,这是我的代码,但我不断收到错误

merge() missing 1 required positional argument: 'right' and can't seem to fix it.

请告诉我你的想法,谢谢

import pandas as pd

df1= pd.read_csv('econ_risk_zip.csv')
df2= pd.read_csv('food_risk_zip.csv')
df3= pd.read_csv('health_risk_zip.csv')
df4= pd.read_csv('housing_risk_zip.csv')

df = pd.merge([df1,df2,df3,df4], right_on = 'zip')
df.to_csv('risk_combined.csv')

标签: pandasdataframecsv

解决方案


你可以用 减少写作reduce。只需指定文件列表,然后您可以合并它们,这样如果您需要添加文件,您只需要修改文件列表。

from functools import reduce
import pandas as pd

files = ['econ_risk_zip.csv', 'food_risk_zip.csv',
         'health_risk_zip.csv', 'housing_risk_zip.csv']

df = reduce(lambda l,r: l.merge(r, on='zip'), [pd.read_csv(f) for f in files])

推荐阅读