使用 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 中的所有列