如何在熊猫数据框中执行左外连接?
Posted
技术标签:
【中文标题】如何在熊猫数据框中执行左外连接?【英文标题】: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")
【问题讨论】:
【参考方案1】:您可以drop
a
中的同一列:
finaloutput=a.drop(['first_name','last_name'],axis=1).merge(b,on=["t_id","s_id"],how="left")
另一种解决方案 - 如果 a
和 b
具有相同的连接列,则可以省略参数 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")
这个作品
【讨论】:
以上是关于如何在熊猫数据框中执行左外连接?的主要内容,如果未能解决你的问题,请参考以下文章