2017-04-12 5 views
1

Ich habe folgendes Problem: Ich habe zwei Pandas Datenrahmen unterschiedlicher Länge einige Zeilen und Spalten enthält, die gemeinsame Werte und einige haben, die unterschiedlich sind, wie folgt aus:Merge zwei Datenrahmen mit aus verlieren Spaltenwerte

df1 : DF2:

Date  NOofIM's Shift    Date  Shift Engineers 
0 3/1/2017 2  3   0 3/1/2017  3  4 
1 3/1/2017 3  2   1 4/1/2017  2  4 
2 4/1/2017 5  1   2 5/1/2017  2  3 
3 5/1/2017 6  1   3 7/1/2017  1  2 
4 6/1/2017 4  1 
5 7/1/2017 5  1      

Was soll ich jetzt tun, um die beiden Datenrahmen verschmilzt so, dass, wenn Datum und Verschiebung den gleichen Wert haben dann die Zeilen von DF2 shoul auf die entsprechende Zeile in df1 fusionieren/angefügt, wie folgt aus:

df1:

  Date  Shift  Engineers NOofIM's 
    0 3/1/2017  3   4   2 
    1 3/1/2017  2   Nan  3 
    2 4/1/2017  2   4   Nan 
    3 4/1/2017  1   Nan  5 
    4 5/1/2017  1   Nan  6 
    5 5/1/2017  2   4   Nan 
    6 6/1/2017  1   Nan  4 
    7 7/1/2017  1   2   5 

Antwort

3
  • merge verbindet auf allen gängigen Zeilen standardmäßig.
  • how='outer' Platz für von dem ersten und zweiten Datenrahmen fehlt

df1.merge(df2, 'outer') 
# more explicit with `on` 
# df1.merge(df2, on=['Date', 'Shift'], how='outer') 

     Date NOofIM's Shift Engineers 
0 3/1/2017  2.0  3  4.0 
1 3/1/2017  3.0  2  NaN 
2 4/1/2017  5.0  1  NaN 
3 5/1/2017  6.0  1  NaN 
4 6/1/2017  4.0  1  NaN 
5 7/1/2017  5.0  1  2.0 
6 4/1/2017  NaN  2  4.0 
7 5/1/2017  NaN  2  3.0 
+0

Wenn ich versuche, äußere es so in dem obigen Beispiel ist das Anhängen werde ich 9 Zeilen, wo wie 7 – vis

+0

allererst erforderlich, Ihr erwartetes Ergebnis zeigt 8 Zeilen. Zweitens sollten Sie Ihre Daten überprüfen, was ich zeige, ist das Ergebnis der Verwendung von "äußeren". Wenn meine Ausgabe dem entspricht, was Sie erwartet haben, aber was ich ausgeführt habe, funktioniert nicht für Sie, dann verursachen beide Versionen ein Problem oder wir verwenden andere Daten. – piRSquared

Verwandte Themen