如何使用pandas根据列id将多个csv文件合并为一个文件
我有4个CSV文件和数千行,所以我会在这里快速复制这些文件如何使用pandas根据列id将多个csv文件合并为一个文件,pandas,dataframe,csv,Pandas,Dataframe,Csv,我有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
'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')
可以逐个合并数据帧:
df1= pd.read_csv('econ_risk_zip.csv', quotechar="'")
df2= pd.read_csv('food_risk_zip.csv', quotechar="'")
df3= pd.read_csv('health_risk_zip.csv', quotechar="'")
df4= pd.read_csv('housing_risk_zip.csv', quotechar="'")
df = df1.merge(df2, on="zip").merge(df3, on="zip").merge(df4, on="zip")
df.to_csv('risk_combined.csv')
可以逐个合并数据帧:
df1= pd.read_csv('econ_risk_zip.csv', quotechar="'")
df2= pd.read_csv('food_risk_zip.csv', quotechar="'")
df3= pd.read_csv('health_risk_zip.csv', quotechar="'")
df4= pd.read_csv('housing_risk_zip.csv', quotechar="'")
df = df1.merge(df2, on="zip").merge(df3, on="zip").merge(df4, on="zip")
df.to_csv('risk_combined.csv')
你可以用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])
你可以用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])