Ich habe einen Datenrahmen mit mehreren Ebenen, zB:Pandas: get Multiindex Ebene als Serie
idx = pd.MultiIndex.from_product((['foo', 'bar'], ['one', 'five', 'three' 'four']),
names=['first', 'second'])
df = pd.DataFrame({'A': [np.nan, 12, np.nan, 11, 16, 12, 11, np.nan]}, index=idx).dropna().astype(int)
A
first second
foo five 12
four 11
bar one 16
five 12
three 11
Ich möchte eine neue Spalte mit der Indexebene second
Titel erstellen, so dass ich
A B
first second
foo five 12 five
four 11 four
bar one 16 one
five 12 five
three 11 three
erhalten
Ich kann dies tun, indem Sie den Index zurücksetzen, die Spalte kopieren und erneut anwenden, aber das scheint mehr Runde.
Ich versuchte df.index.levels[1]
, aber das erstellt eine sortierte Liste, es behält nicht die Reihenfolge.
Wenn es ein einzelner Index wäre, würde ich df.index
aber in einem Multiindex verwenden, der eine Spalte von Tupeln erstellt.
Wenn dies an anderer Stelle gelöst wird, teilen Sie bitte, da ich Glück gehabt habe, die Stackoverflow-Archive zu durchsuchen.
ist es möglich, durch Indexnamen zu tun? –
Ja. 'df.index.get_level_values (level = 'second')' funktioniert auch. – Alexander
Sie können dasselbe tun, wenn der Multiindex über den Spalten und nicht über den Index liegt, indem Sie 'df.columns.get_level_values (level = 1)' verwenden. –