使用 3 列合并 Pandas 中的 2 个数据框 [重复]

Posted

技术标签:

【中文标题】使用 3 列合并 Pandas 中的 2 个数据框 [重复]【英文标题】:Merge 2 dataframe in pandas using 3 columns [duplicate] 【发布时间】: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') 例如。 【参考方案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中的文档

【讨论】:

以上是关于使用 3 列合并 Pandas 中的 2 个数据框 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

pandas concat 2个数据框,并在合并数据中添加一列新数据。

在 Pandas/Python 中合并两个数据框,保留数据框 1 中的所有列

在 Pandas 中合并两个大型数据框

合并 Pandas 数据框中的 2 列,用前一个值填充 NaN [重复]

熊猫数据框合并选择列

将 2 列中的值合并为 pandas 数据框中的单列