2016-10-31 4 views
2

Ich habe einen Datenrahmen a:Doppelte Spalten mit Pandas fusionieren?

ID value1 
1  nan 
2  nan 
3  nan 
4  nan 
5  nan 

und dann zwei weitere Datenrahmen, b und c:

ID  value1 
2  20 
3  10 

ID  value1 
1  58 
4  20 

Als ich a.merge(b, on='ID').merge(c, on='ID') tun, bekomme ich doppelte Spalten von value. Mein Endergebnis hat die Spalten:

ID  value1_x value1_y value1 

aber ich möchte am Ende mit:

ID value1 
1  58 
2  20 
3  10 
4  20 
5  nan 

Wie verwende ich b und c die Werte in a ohne doppelte Spalten zu füllen?

Antwort

2

können Sie verwenden concat und dann merge mit drop alte Spalte value1 in a:

df1 = pd.concat([b,c]) 
print (df1) 
    ID value1 
0 2  20 
1 3  10 
0 1  58 
1 4  20 

df2 = pd.merge(a ,df1, on='ID', how='left', suffixes=('_','')) 
df2.drop('value1_', axis=1, inplace=True) 
print (df2) 
    ID value1 
0 1 58.0 
1 2 20.0 
2 3 10.0 
3 4 20.0 
4 5  NaN 
+0

Ich werde die OP aktualisieren, aber sagen wir mal 'a'-IDs hat 5-10, die auch Nans in 'Wert1' - und ich möchte sie als Nans behalten. – user1566200

+0

Bitte sehen Sie update, Lösung ist sehr ähnlich - nur 'Suffixe' hinzugefügt, um '_' zur ersten Spalte und leere Zeichenfolge in die zweite Spalte hinzuzufügen. – jezrael