首页 > 解决方案 > 在熊猫中逐行连接具有相同列值的数据帧

问题描述

我有两个数据框:

df1:
              A       B        
    0        12  some text    
    1        28  some text_1    
    2        28  some text_2   
    3        40  some text   
    4        50  some text  

df2:
              C       D        
    0        11  some text_1    
    1        11  some text_2
    2        12  some text
    3        28  some text   
    4        40  some text   
    5        60  some text 

这两个数据帧分别按列AC(浮动)排序。而且我要:

 df3
                   A       B        C         D      
        0        NaN               11   some text_1
        1        NaN               11   some text_1
        2        12   some text    12   some text
        3        28   some text_1  28   some text
        4        28   some text_2  Nan
        5        40   some text    40   some text
        6        50   some text    Nan
        7        NaN               60   some text

所以我想用相同的列值逐行连接数据帧。

编辑 1 通过使用结果是具有和值df3 = df1.merge(df2, left_on=['A'], right_on=['C'], how='outer')的所有相同行的笛卡尔积。这会创建一个更大的数据框以防万一,例如,如果我的时间值和时间相同,则结果将是带有.ACdf1 nxdf2 mxm*n (m > n)x value

但我只想将第一nm from df1n_df2mndf1

标签: pythonpandas

解决方案


如果您想确保 df1 中的 A、B 值与 df2 中的 C、D 相同(或修改列表以仅包含一列),请尝试以下操作:

df3 = df1.merge(df2, left_on=['A', 'B'], right_on=['C', 'D'], how='outer')

推荐阅读