Pandas: obtenga el nivel de índice múltiple como serie
Tengo un marco de datos con múltiples niveles, por ejemplo:
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
Quiero crear una nueva columna usando el nivel de índice tituladosecond
para que yo pueda
A B
first second
foo five 12 five
four 11 four
bar one 16 one
five 12 five
three 11 three
Puedo hacer esto restableciendo el índice, copiando la columna y luego volviendo a aplicar, pero eso parece más completo.
Lo intentédf.index.levels[1]
, pero eso crea una lista ordenada, no conserva el orden.
Si fuera un índice único, usaríadf.index
pero en un índice múltiple que crea una columna de tuplas.
Si esto se resuelve en otro lugar, comparta ya que no he tenido suerte buscando en los archivos de stackoverflow.