single - python dataframe multiindex
Agregar un nivel a un pandas MultiIndex (2)
Primero puede agregarlo como una columna normal y luego agregarlo al índice actual, así que:
df[''Firstlevel''] = ''Foo''
df.set_index(''Firstlevel'', append=True, inplace=True)
Y cambie el orden si es necesario con:
df.reorder_levels([''Firstlevel'', ''A'', ''B''])
Lo que resulta en:
Vals
Firstlevel A B
Foo a1 b1 0.871563
b2 0.494001
a2 b3 -0.167811
a3 b4 -1.353409
Tengo un DataFrame con un MultiIndex creado después de algunas agrupaciones:
import numpy as np
import pandas as p
from numpy.random import randn
df = p.DataFrame({
''A'' : [''a1'', ''a1'', ''a2'', ''a3'']
, ''B'' : [''b1'', ''b2'', ''b3'', ''b4'']
, ''Vals'' : randn(4)
}).groupby([''A'', ''B'']).sum()
df
Output> Vals
Output> A B
Output> a1 b1 -1.632460
Output> b2 0.596027
Output> a2 b3 -0.619130
Output> a3 b4 -0.002009
¿Cómo añado un nivel al MultiIndex para que lo convierta en algo así como:
Output> Vals
Output> FirstLevel A B
Output> Foo a1 b1 -1.632460
Output> b2 0.596027
Output> a2 b3 -0.619130
Output> a3 b4 -0.002009
Una buena forma de hacerlo en una línea usando pandas.concat()
:
import pandas as pd
pd.concat([df], keys=[''Foo''], names=[''Firstlevel''])
Esto se puede generalizar a muchos marcos de datos, vea los docs .