python - multiindex - pandas xs
Convertir Pandas Multi-Index en columna (2)
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 cual 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?
Lo necesito porque quiero agregar los datos como se indica aquí , pero no puedo seleccionar mis columnas de esa manera si están en uso como índices.
El reset_index () es un método de marco de datos de pandas que transferirá valores de índice al marco 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:
df.reset_index(inplace=True)
Esto realmente no se aplica a su caso, pero podría ser útil para otros (como yo hace 5 minutos) para saber. Si el multindex de uno tiene los mismos nombres:
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 creadas no pueden compartir nombres.
Por lo tanto, debe cambiar el nombre del 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 amuleto.
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 tanto el año como el mes se llamaban live_date
.