2016-05-31 9 views
1

Ich habe eine Liste von Datenrahmen, jeder hat einen Multi-Index. Eine Spalte ist ein VarName, die andere ist "rund".Ändern der Werte in einem Pandas Dataframe Multiindex

Die Werte in der Spalte varName sind Zahlen. Ich habe einen anderen Datenrahmen, der eine Zuordnung der Nummern zu Etiketten ist. Ich möchte map() für die varName-Spalte verwenden, aber da es Teil des Indexes ist, gibt es keine varName-Spalte.

Ich habe versucht, die Varname-Spalte zu kopieren, oder machen Sie es nicht mehr Teil des Index, aber keines dieser Dinge scheint zu funktionieren.

+0

[How-to-make-gut reproduzierbare-Pandas-Beispiele] (http://stackoverflow.com/questions/20109391/how- zu machen-gut-reproduzierbare Pandas-Beispiele) – MaxU

+0

Eigentlich die richtige Antwort für diesen speziellen Fall stellte sich heraus, "tun das Mapping auf die Daten vor dieser Spalte wird der Index." Das wird nicht in allen Fällen funktionieren, aber funktioniert für diesen ... –

Antwort

1

Wenn varName ist die name eines der MultiIndex Ebenen, sollten Sie in der Lage sein:

df.reset_index(level='varName') 

varName zu einem column zu konvertieren und dann map() verwenden. Wenn varName nicht der name ist, sollten Sie weiterhin level=0 (oder 1) verwenden können.

0

vielleicht können Sie etwas tun, wie:

df.reset_index(level=1).merge(df2) 

dies unter der Annahme, level = 1 ist Ihre gemeinsame Spalte (zB 'varName') zwischen zwei dfs. wenn Sie möchten, können Sie als set_index für die Markennamen, wie:

df.reset_index(level=1).merge(df2).set_index(['labels'],append=True)