single multiindex index groupby drop python pandas dataframe flatten multi-index

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 .