subcolumn single past multiple multiindex may lexsort index impact groupby data python pandas

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 .