2017-06-22 4 views
0

Ich habe 2 Datenrahmen a und b:Wie man den linken äußeren Join im Pandas Dataframe durchführt?

a hat folgende Spalten:

t_id 
s_id 
first_name 
last_name 
country_name 

b hat folgende Spalten:

t_id 
s_id 
first_name 
last_name 

ich einen linken Außen zu tun haben, kommen Sie mit den Aufzeichnungen zu bekommen in einem, aber möchten first_name und last_name von Dataframe b anstelle von first_name und last_name von einem Datenframe verwenden und die Ergebnisse in finaloutput speichern. Ich möchte, dass die Spaltennamen unverändert bleiben.

Ich habe die unten Datenrahmen Abfrage verwendet:

bitte könnten Sie beraten.

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

Antwort

1

Sie können drop gleichen Spalte in a:

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

Eine andere Lösung - Parameter on weglassen werden kann, wenn a und b gleichen Spalte für beitreten:

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

Dynamischere Lösung finden Sie alle Spalten zur Auswahl von 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") 

diese Arbeit

Verwandte Themen