【问题标题】:how to perform left outer join in pandas dataframe?如何在熊猫数据框中执行左外连接?
【发布时间】:2017-06-22 09:55:35
【问题描述】:

我有 2 个数据框 a 和 b:

a 有以下列:

t_id
s_id
first_name
last_name
country_name

b 有以下列:

t_id
s_id
first_name
last_name

我必须进行左外连接才能获取 a 中的记录,但我想使用数据帧 b 中的 first_name 和 last_name 而不是数据帧中的 first_name 和 last_name 并将结果存储在最终输出中。我希望列名保持原样。

我使用了以下数据框查询:

请给点建议。

finaloutput = a.merge(right=b[["first_name","last_name"]], on = ["t_id","s_id"], how = "left")

【问题讨论】:

    标签: pandas join dataframe


    【解决方案1】:

    您可以dropa 中的同一列:

    finaloutput=a.drop(['first_name','last_name'],axis=1).merge(b,on=["t_id","s_id"],how="left")
    

    另一种解决方案 - 如果 ab 具有相同的连接列,则可以省略参数 on

    finaloutput = a[['t_id','s_id','country_name']].merge(b, how = "left")
    

    更动态的解决方案是找到所有列供difference选择:

    lcols = a.columns.difference(b.columns).tolist()
    joincols = ["t_id","s_id"]
    finaloutput = a[lcols + joincols].merge(b, how = "left")
    

    【讨论】:

      【解决方案2】:
      finaloutput = a[['t_id','s_id','country_name']].merge(b,on=["t_id","s_id"], how = "left")
      

      这个作品

      【讨论】:

        猜你喜欢
        • 2018-11-05
        • 2013-08-14
        • 2016-03-09
        • 2018-07-11
        • 2014-03-14
        • 2021-07-12
        • 2021-10-16
        • 1970-01-01
        相关资源
        最近更新 更多