2017-06-22 100 views
0

我有2個dataframes a和b:如何在熊貓數據框中執行左外連接?

一個具有以下的列:

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

回答

1

你可以在adrop同一列:

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") 
1
finaloutput = a[['t_id','s_id','country_name']].merge(b,on=["t_id","s_id"], how = "left") 

這項工作