【问题标题】:Merge 2 dataframe in pandas using 3 columns [duplicate]使用 3 列合并 Pandas 中的 2 个数据框 [重复]
【发布时间】:2021-11-04 15:18:41
【问题描述】:

所以基本上我有 2 个具有以下结构的数据框

PATH     CUID     NAME     Author       Updated     
1        1        Test     Test         01/01/2021
2        2        Test1    Test         01/01/2021    
PATH     CUID     NAME     Author       Updated
1        1        Test     Test 2       01/02/2021
3        3        Test2    Test 2       01/02/2021

是否可以使用 3 个键列进行合并?我知道使用 2 列进行合并的代码,但不确定是否可以添加第 3 列。

我正在进行外部连接,以便所有值都存在,如果两个数据帧上没有匹配项,则只有 Author(x 或 y) 和 Updated(x 或 y) 将被清空。

示例输出为:

PATH     CUID     NAME     Author_x     Updated_x     Author_y     Updated_y
1        1        Test     Test         01/01/2021    Test 2       01/02/2021
2        2        Test1    Test         01/01/2021    
3        3        Test2                               Test 2       01/02/2021

【问题讨论】:

  • df3 = df1.merge(df2, on=['PATH', 'CUID', 'NAME'], how='outer') 例如。

标签: python pandas


【解决方案1】:

试试pandas.merge():

import pandas as pd

pd.merge(df1, df2, on=["PATH", "CUID", "NAME"], how="outer")
     PATH    CUID     NAME Author_x   Updated_x Author_y   Updated_y
  <int64> <int64> <object> <object>    <object> <object>    <object>
0       1       1     Test     Test  01/01/2021   Test 2  01/02/2021
1       2       2    Test1     Test  01/01/2021      NaN         NaN
2       3       3    Test2      NaN         NaN   Test 2  01/02/2021

【讨论】:

  • 谢谢!显然,我的代码出错的原因是我用于连接列的标题名称不正确。
【解决方案2】:

是的,您可以通过传递一个列表来合并两个以上的键 如果两个数据框中的列具有相同的名称,则使用 on=['columns1','columns2','columns3']

否则 使用 left_on=['columns1','columns2','columns3'], right_on=['columns1','columns2','columns3']

参见https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html中的文档

【讨论】:

    猜你喜欢
    • 2017-10-16
    • 2021-08-23
    • 2019-11-22
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 2021-10-08
    • 2020-10-19
    相关资源
    最近更新 更多