如何在pandas数据帧中执行左外连接?

时间:2017-06-22 09:55:36

标签: pandas join dataframe

我有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中。我希望列名保持原样。

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

请你指教。

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

2 个答案:

答案 0 :(得分:1)

您可以a中的drop相同列:

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

如果ona具有相同的联接列,则可以省略另一个解决方案 - 参数b

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")

答案 1 :(得分:1)

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

这项工作