Convierte Pandas Multi-Index en columna

Tengo un dataframe con 2 niveles de índice:

value Trial measurement 1 0 13 1 3 2 4 2 0 NaN 1 12 3 0 34 

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 así mis columnas si están en uso como índices.

El reset_index () es un método de dataframe de pandas que transferirá los valores de índice al dataframe como columnas. La configuración predeterminada para el parámetro es drop = False (que mantendrá los valores del índice como columnas).

Todo lo que tienes que hacer agrega .reset_index(inplace=True) después del nombre del DataFrame:

 df.reset_index(inplace=True) 

Esto realmente no se aplica a su caso, pero podría ser útil para otras personas (como yo hace 5 minutos) saberlo. Si la multindex tiene los mismos nombres como este:

  value Trial Trial 1 0 13 1 3 2 4 2 0 NaN 1 12 3 0 34 

df.reset_index(inplace=True) fallará porque las columnas que se crean no pueden compartir nombres.

Entonces, necesitas cambiar el nombre de multindex con df.index = df.index.set_names(['Trial', 'measurement']) para obtener:

  value Trial measurement 1 0 13 1 1 3 1 2 4 2 0 NaN 2 1 12 3 0 34 

Y luego df.reset_index(inplace=True) funcionará como un hechizo.

Encontré este problema después de agrupar por año y mes en una columna datetime (no índice) llamada live_date , lo que significaba que tanto el año como el mes se llamaban live_date .