Ich habe zwei Datenrahmen und jeder hat zwei Indexspalten. Ich möchte sie zusammenführen. Der erste Datenrahmen ist beispielsweise der folgende:
V1
A 1/1/2012 12
2/1/2012 14
B 1/1/2012 15
2/1/2012 8
C 1/1/2012 17
2/1/2012 9
Der zweite Datenrahmen ist der folgende:
V2
A 1/1/2012 15
3/1/2012 21
B 1/1/2012 24
2/1/2012 9
D 1/1/2012 7
2/1/2012 16
und als Ergebnis möchte ich folgendes bekommen:
V1 V2
A 1/1/2012 12 15
2/1/2012 14 N/A
3/1/2012 N/A 21
B 1/1/2012 15 24
2/1/2012 8 9
C 1/1/2012 7 N/A
2/1/2012 16 N/A
D 1/1/2012 N/A 7
2/1/2012 N/A 16
Ich habe einige Versionen mit den Methoden pd.merge
und ausprobiert .join
, aber nichts scheint zu funktionieren. Hast du irgendwelche Vorschläge?
Antworten:
Sie sollten in der Lage sein,
join
standardmäßig den Index zu verknüpfen. In Anbetracht Ihres gewünschten Ergebnisses müssen Sieouter
als Verknüpfungstyp verwenden.>>> df1.join(df2, how='outer') V1 V2 A 1/1/2012 12 15 2/1/2012 14 NaN 3/1/2012 NaN 21 B 1/1/2012 15 24 2/1/2012 8 9 C 1/1/2012 17 NaN 2/1/2012 9 NaN D 1/1/2012 NaN 7 2/1/2012 NaN 16
quelle
Sie können dies tun mit
merge
:df_merged = df1.merge(df2, how='outer', left_index=True, right_index=True)
Das Schlüsselwortargument
how='outer'
behält alle Indizes aus beiden Frames bei und füllt fehlende Indizes mit ausNaN
. Die Argumenteleft_index
undright_index
Schlüsselwortargumente müssen für die Indizes zusammengeführt werden. Wenn SieNaN
nach dem Zusammenführen alle Informationen in einer Spalte erhalten, besteht ein weiterer Schritt zur Fehlerbehebung darin, zu überprüfen, ob Ihre Indizes dieselben habendtypes
.Der
merge
obige Code erzeugt für mich die folgende Ausgabe:V1 V2 A 2012-01-01 12.0 15.0 2012-02-01 14.0 NaN 2012-03-01 NaN 21.0 B 2012-01-01 15.0 24.0 2012-02-01 8.0 9.0 C 2012-01-01 17.0 NaN 2012-02-01 9.0 NaN D 2012-01-01 NaN 7.0 2012-02-01 NaN 16.0
quelle
join()
nützlich.