2017-03-22 3 views
3

Wie kann ich zwei verschiedene Datenrahmen zusammenführen, wobei alle Zeilen aus jedem Datenrahmen beibehalten werden, während die Lücken ausgefüllt werden?Zusammenführen von Datenrahmen unter Beibehaltung aller Elemente pandas

DF1

Name  Addr  Num  Parent Parent_Addr 
Matt  123H  8  James 543F 
Adam  213H  9  James 543F 
James 321H  10  Mom  654F 
Andrew 512F  10  Dad  665F 
Faith 555A  7  None  657F 

DF2

Name  Parent Parent_Num Parent_Addr 
Matt  James  10   543F 
Adam  James  10   543F 
James Mom  12   654F 
None  Ian  13   656F 
None  None  None  1234 

Erwartete Ausgabe

Name  Addr  Num  Parent Parent_Num Parent_Addr 
Matt  123H  8  James 10   543F 
Adam  213H  9  James 10   543F 
James 321H  10  Mom  12   654F 
Andrew 512F  10  Dad  None   665F 
Faith 555A  7  None  None   657F 
None  None  None Ian  13   656F 
None  None  None None  None   1234 

ich alle Daten aus beiden Datenrahmen zu fusionieren und zu halten versucht bin. Jede Hilfe würde sehr geschätzt werden. Danke.

Antwort

4

Sie müssen sich auf allen gängigen Spalten verschmelzen und Outer-Joins

pd.merge(df1, df2, on = ['Name', 'Parent', 'Parent_Addr'], how = 'outer') 

    Name Addr Num Parent Parent_Addr Parent_Num 
0 Matt 123H 8 James 543F  10 
1 Adam 213H 9 James 543F  10 
2 James 321H 10 Mom  654F  12 
3 Andrew 512F 10 Dad  665F  NaN 
4 Faith 555A 7 None 657F  NaN 
5 None NaN  NaN Ian  656F  13 
6 None NaN  NaN None 1234  None 
+0

Ist auf Liste verwenden erwartet, dass alle Spalten sein, die gleich zwischen den beiden Datenrahmen sind? Ich sehe, du hast nur drei Spalten angegeben und bin neu beim Zusammenführen. – johnnyb

2

Sie können alle Zeilen halten mit einer 'outer'merge
Notiz, dass standardmäßig merge auf allen gängigen Spaltennamen beitreten werden.

df1.merge(df2, 'outer') 

    Name Addr Num Parent Parent_Addr Parent_Num 
0 Matt 123H 8.0 James  543F   10 
1 Adam 213H 9.0 James  543F   10 
2 James 321H 10.0 Mom  654F   12 
3 Andrew 512F 10.0 Dad  665F  NaN 
4 Faith 555A 7.0 None  657F  NaN 
5 None NaN NaN Ian  656F   13 
6 None NaN NaN None  1234  None 
Verwandte Themen