2013-12-20 7 views
8

Ich habe meinen Kopf gegen meinen Schreibtisch geschlagen, kann nicht herausfinden, ob es einen Weg gibt, vielleicht versuche ich etwas Unmögliches.Merge/Join/Zwei Pandas DataFrames mit MultiIndex-Spalten nach Index und Spalten anhängen

Ich habe zwei DataFrames mit MultiIndex-Spalten (drei Ebenen) und Zeitindex (einzelne Ebene). Die erste ist, wie folgt aus:

border   a-b     c-d 
from    a   b   c 
to     b   a   d 
2009-03-01 -0.778346 -0.928997  NaN 
2009-03-02 -1.352559 1.247335  NaN 
2009-03-03 -0.967939 0.432638  NaN 
2009-03-04 0.786094 -2.209559  NaN 
2009-03-05 -0.001338 1.084152  NaN 
2009-03-06 1.163334  NaN  NaN 
2009-03-07 -0.587593  NaN  NaN 
2009-03-08 0.118469  NaN  NaN 
2009-03-09  NaN  NaN -1.272959 
2009-03-10  NaN  NaN -1.207129 
2009-03-11  NaN  NaN 0.244019 

Zu diesem DF möchte ich folgendes hinzufügen:

border   a-b 
from    a 
to     b 
2009-03-09 1.243296 
2009-03-10 -0.049870 
2009-03-11 1.599999 

unter Berücksichtigung sowohl Zeilen und Spalten-Indizes. Das Ergebnis sollte sein:

border   a-b     c-d 
from    a   b   c 
to     b   a   d 
2009-03-01 -0.778346 -0.928997  NaN 
2009-03-02 -1.352559 1.247335  NaN 
2009-03-03 -0.967939 0.432638  NaN 
2009-03-04 0.786094 -2.209559  NaN 
2009-03-05 -0.001338 1.084152  NaN 
2009-03-06 1.163334  NaN  NaN 
2009-03-07 -0.587593  NaN  NaN 
2009-03-08 0.118469  NaN  NaN 
2009-03-09 1.243296  NaN -1.272959 
2009-03-10 -0.049870  NaN -1.207129 
2009-03-11 1.599999  NaN 0.244019 

Ich habe verschiedene Möglichkeiten ausprobiert, darunter mit Merge und Mitglied werden, aber kann es nicht zu arbeiten.

Irgendwelche Ideen? Danke im Voraus.

P.S. Ich könnte den Code, den ich verwendet habe, um die zwei DFs oben zu erstellen, wenn es Hilfe ist, aber es ist ein bisschen lang. Aber auf jeden Fall suche ich nach einer generischen Antwort, der genaue Name der Spalten oder der Index für Zeilen ist irrelevant (könnte sogar ein Index für ganze Zahlen sein).

Antwort

5

versuchen pandas.DataFrame.update

DataFrame.update(other, join='left', overwrite=True, 
       filter_func=None, raise_conflict=False) 

Ändern Datenrahmen an Ort und Stelle unter Verwendung von nicht-NA von geben Dataframe-Werte. Ausrichten auf Indizes

+0

Perfekt, danke. War dieser Methode nicht bewusst. – David

+1

In v0.13.1 unterstützt dies keine andere Join-Methode als left ... Wenn es "äußere" hätte, wäre dies genau das, wonach ich suche! – PhilMacKay

Verwandte Themen