Tengo un marco de datos con 2 niveles de índice:
                         value
Trial    measurement
    1              0        13
                   1         3
                   2         4
    2              0       NaN
                   1        12
    3              0        34 
Lo que quiero convertir en esto:
Trial    measurement       value
    1              0        13
    1              1         3
    1              2         4
    2              0       NaN
    2              1        12
    3              0        34 
¿Cómo puedo hacer esto mejor?
Necesito esto porque quiero agregar los datos como se indica aquí , pero no puedo seleccionar mis columnas así si están en uso como índices.

.reset_index()Respuestas:
El reset_index () es un método pandas trama de datos que va a transferir valores de índice en la trama de datos como columnas. La configuración predeterminada para el parámetro es drop = False (que mantendrá los valores del índice como columnas).
Todo lo que tiene que hacer es agregar
.reset_index(inplace=True)después del nombre del DataFrame:fuente
df.reset_index(level=[...])Esto realmente no se aplica a su caso, pero podría ser útil para que otros (como yo hace 5 minutos) lo sepan. Si el índice múltiple tiene el mismo nombre como este:
df.reset_index(inplace=True)fallará, porque las columnas que se crean no pueden tener los mismos nombres.Entonces, debe cambiar el nombre del índice múltiple con
df.index = df.index.set_names(['Trial', 'measurement'])para obtener:Y luego
df.reset_index(inplace=True)funcionará como un encanto.Encontré este problema después de agrupar por año y mes en una columna de fecha y hora (no índice) llamada
live_date, lo que significaba que se nombraron tanto el año como el meslive_date.fuente
Como @ cs95 mencionó en un comentario, para soltar solo un nivel, use:
df.reset_index(level=[...])Esto evita tener que redefinir el índice deseado después de reiniciar.
fuente