pandas - 如何使用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')
解决方案
你可以用 减少写作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])
推荐阅读
- r - 使用 latex2exp::TeX 用方程注释用 ggplot2 绘制的图
- javascript - 如何在客户端获取另一个网站的 html?
- android - Android 允许使用某些模式进行深度链接
- c# - 不同 DbContext 之间的一对多
- c# - “finally”块可以更改其“try”块的返回值吗?
- dropdown - 动态加载下拉内容
- swift - 实例成员不能用于类型 - Firebase
- c - 用于保护 C 中结构的基础成员的指针的“const”范围
- c# - 序列化后 Json.Net 属性名称更改
- blueprism - MS Excel VBO 打开工作簿操作失败