我有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")
答案 0 :(得分:1)
您可以a
中的drop
相同列:
finaloutput=a.drop(['first_name','last_name'],axis=1).merge(b,on=["t_id","s_id"],how="left")
如果on
和a
具有相同的联接列,则可以省略另一个解决方案 - 参数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")
这项工作