Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用pandas根据列id将多个csv文件合并为一个文件_Pandas_Dataframe_Csv - Fatal编程技术网

如何使用pandas根据列id将多个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

我有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')

可以逐个合并数据帧:

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])