2016-04-11 9 views
14

Ich habe zwei Datenrahmen und jeder hat zwei Indexspalten. Ich möchte sie zusammenführen. Zum Beispiel ist der erste Datenrahmen die folgenden:Datenrahmen für Indizes in PANDAS verschmelzen

     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 folgendes:

     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 würde Ich mag die folgende erhalten:

     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 

I habe versucht ein paar version usig pd.merge und .join, aber nichts scheint zu funktionieren. Hast du irgendwelche Vorschläge? Vielen Dank.

+0

Versuchen Sie pd.concat ... das sollte funktionieren. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html .. Sie können die Achse auswählen, an der Sie die Datenrahmen verbinden möchten. – Joey

Antwort

18

Sie sollten in der Lage join zu verwenden, die auf dem Index als Standard verbindet. Angesichts Ihres gewünschten Ergebnisses müssen Sie outer als Join-Typ 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 

Signatur: _.join (andere, auf = None, wie = 'links', lsuffix = '', rsuffix = '', sort = False) Docstring: Spalten Join mit anderen Datenrahmen entweder auf Index oder auf einem Schlüssel Spalte. Verbinden Sie mehrere DataFrame-Objekte effizient per Index auf einmal durch , indem Sie eine Liste übergeben.

+0

Das funktioniert, danke! – km1234

5

Sie können dies mit merge:

df_merged = df1.merge(df2, how='outer', left_index=True, right_index=True) 

Das Schlüsselwort Argument how='outer' hält alle Indizes von beiden Frames, bei der Besetzung von Indizes mit NaN fehlt. Die Schlüsselworte left_index und right_index müssen auf den Indizes zusammengeführt werden. Wenn Sie nach dem Zusammenführen alle NaN in einer Spalte erhalten, ist ein weiterer Schritt zur Fehlerbehebung, zu überprüfen, ob Ihre Indizes die gleiche dtypes haben.

Der merge Code über die folgende Ausgabe für mich:

   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 
+0

Das funktioniert auch, danke! – km1234

Verwandte Themen