【问题标题】:Merge two dataframes based on a column基于列合并两个数据框
【发布时间】:2018-01-30 05:48:53
【问题描述】:

我想比较两个数据帧 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

【问题讨论】:

    标签: python pandas dataframe merge


    【解决方案1】:

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

    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 发生在两个数据框中的列被合并时。

    【讨论】:

    • 我已经在我的回答中介绍了这一点,此外,它的列比 OP 想要的要多。
    • @cᴏʟᴅsᴘᴇᴇᴅ 我将其保留,以防它对其他用户有帮助。如果 OP 认为您的回答最有帮助,他可以接受。
    【解决方案2】:

    选项 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
    

    选项 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
    

    选项 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多