使用 Pandas [with key column] 将 CSV 与不同的列组合
Posted
技术标签:
【中文标题】使用 Pandas [with key column] 将 CSV 与不同的列组合【英文标题】:Combining CSV's with Different Columns using Pandas [with key column] 【发布时间】:2019-09-02 11:31:34 【问题描述】:我正在尝试在 Python 中合并两个 CSV 文件,每个 CSV 文件都有唯一的列,但两个 CSV 文件共享一个公共键列。
我一直在查看 ***/Google/Pandas 文档,但没有找到我想要的内容。 Pandas 文档页面上提供的合并和 concat 示例与我试图实现的不同,所以我不确定我所要求的是否可以通过 Pandas 实现。
我已将两个 CSV 文件中的选定列读入单独的数据帧,我现在想做的是根据键列将两个数据帧组合成一个数据帧。
Example
CSV 1:
Key Make Model
501 Audi A3
502 Audi A4
503 Audi A5
CSV 2:
Key Engine
501 2.0T
502 2.0T
503 2.0T
Combined Expected Result:
Key Make Model Engine
501 Audi A3 2.0T
502 Audi A4 2.0T
503 Audi A5 2.0T
【问题讨论】:
【参考方案1】:您需要将您的 csvs 读入 2 个单独的数据框,然后将它们加入“关键”列。
import pandas as pd
df1 = pd.read_csv('csv1.csv')
df2 = pd.read_csv('csv2.csv')
df_final = df1.merge(df2, left_on = 'Key', right_on = 'Key')
【讨论】:
这是否也适用于超过 2 个 csv 文件?【参考方案2】:Kacper Sobociński 回答正确,可以使用 pandas 合并。
import pandas as pd
data1 = 'Key': [501,502,503],
'Make': ['Audi','Audi','Audi'],
'Model': ['A3','A4','A5']
data2 = 'Key':[501,502,503],
'Engine': ['2.0T', '2.0T','2.0T']
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df = pd.merge(df1,df2, how = 'inner', on = 'Key')
print(df)
Key Make Model Engine
0 501 Audi A3 2.0T
1 502 Audi A4 2.0T
2 503 Audi A5 2.0T
【讨论】:
谢谢,这正是我想要的。 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受以上是关于使用 Pandas [with key column] 将 CSV 与不同的列组合的主要内容,如果未能解决你的问题,请参考以下文章
pandas apply返回多列时出错ValueError: Must have equal len keys and value when setting with an iterable解决方案
pandas报错 TypeError: Cannot perform ‘rand_‘ with a dtyped [object] array and scalar of type [bool](代码
HDF5 min_itemsize 错误:ValueError: Trying to store a string with len [##] in [y] column but this colum