【问题标题】:Combining CSV's with Different Columns using Pandas [with key column]使用 Pandas [with key column] 将 CSV 与不同的列组合
【发布时间】:2019-09-02 11:31:34
【问题描述】:

我正在尝试在 Python 中合并两个 CSV 文件,每个 CSV 文件都有唯一的列,但两个 CSV 文件共享一个公共键列。

我一直在查看 StackOverflow/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

【问题讨论】:

    标签: python pandas csv dataframe concat


    【解决方案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。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受
    猜你喜欢
    • 2021-06-29
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多