首页 文章

根据列合并两个数据帧

提问于
浏览
0

我想比较两个数据帧df1和df2中的名称列,输出数据帧df1中的匹配行,并将结果存储在新数据帧df3中 . 我如何在熊猫中做到这一点?

DF1

place name qty unit
NY    Tom   2  10
TK    Ron   3  15
Lon   Don   5  90
Hk    Sam   4  49

DF2

place name price 
PH    Tom   7    
TK    Ron   5

结果:

DF3

place name qty unit
NY    Tom   2  10
TK    Ron   3  15

2 回答

  • 0

    Option 1

    使用 df.isin

    In [1362]: df1[df1.name.isin(df2.name)]
    Out[1362]: 
      place name  qty  unit
    0    NY  Tom    2    10
    1    TK  Ron    3    15
    

    Option 2

    使用 df.merge 执行内部联接:

    In [1365]: df1.merge(df2.name.to_frame())
    Out[1365]: 
      place name  qty  unit
    0    NY  Tom    2    10
    1    TK  Ron    3    15
    

    Option 3

    使用 df.eq

    In [1374]: df1[df1.name.eq(df2.name)]
    Out[1374]: 
      place name  qty  unit
    0    NY  Tom    2    10
    1    TK  Ron    3    15
    
  • 0

    你想要一个叫做内连接的东西 .

    df1.merge(df2,on = 'name')
    
    place_x name    qty unit place_y price
    NY      Tom      2  10     PH      7
    TK      Ron      3  15     TK      5
    

    当两个数据框中的列合并时,会发生 _x_y .

相关问题