Pandas - Zusammenführen von zwei DataFrames mit Identischen Spaltennamen
Habe ich zwei Daten-Frames mit identischen Spaltennamen und identische IDs in der ersten Spalte. Mit Ausnahme der ID-Spalte, die für jede Zelle, die einen Wert enthält, der in einem DataFrame enthält NaN in der anderen.
Hier ist ein Beispiel, wie Sie Aussehen:
ID Cat1 Cat2 Cat3
1 NaN 75 NaN
2 61 NaN 84
3 NaN NaN NaN
ID Cat1 Cat2 Cat3
1 54 NaN 44
2 NaN 38 NaN
3 49 50 53
Ich Zusammenführen möchten Sie in einem DataFrame, während die gleichen Spaltennamen. Also das Ergebnis würde dann so Aussehen:
ID Cat1 Cat2 Cat3
1 54 75 44
2 61 38 84
3 49 50 53
Habe ich versucht:
df3 = pd.merge(df1, df2, on='ID', how='outer')
Gab mir einen DataFrame mit doppelt so vielen Spalten. Wie kann ich merge die Werte aus jeder DataFrame in eine?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wahrscheinlich wollen, df.update. Finden Sie die Dokumentation.
In diesem Fall, die combine_first Funktion geeignet ist. (http://pandas.pydata.org/pandas-docs/version/0.13.1/merging.html)
Wie der name schon sagt, combine_first nimmt den ersten DataFrame und fügt es mit den Werten aus der zweiten, wo immer es findet ein NaN-Wert in der ersten.
Also:
erzeugt einen neuen DataFrame, df3, das ist im wesentlichen nur df1 mit Werten aus df2 gefüllt, Wann immer möglich.
Könnte man auch einfach ändern, die NaN-Werte in df1 mit nicht-NaN-Werte in der df2.