Extracción de un nivel del índice

Trabajando con un DataFrame o una Serie pandas con multi-índice, es posible extraer los valores de un nivel del índice con el método .get_level_values(). El parámetro que deberemos pasar a este método será o el número del nivel o su nombre -si es que el índice ha recibido nombres-. Por ejemplo, partimos del DataFrame que hemos creado en las secciones anteriores:

index = pd.MultiIndex.from_product(
    [[2018, 2019],["Spain", "Portugal", "France"]],
    names = ["Year", "Country"]
)
data = pd.DataFrame(data = [18, 20, 10, 15, 12, 18], index = index, columns = ["Sales"])
data

DataFrame con multi-índice

La columna de etiquetas del multi-índice situada en el extremo izquierdo es la que recibe el número (el índice) 0. Por lo tanto:

data.index.get_level_values(0)

Int64Index([2018, 2018, 2018, 2019, 2019, 2019], dtype='int64', name='Year')

De forma semejante:

data.index.get_level_values(1)

Index(['Spain', 'Portugal', 'France', 'Spain', 'Portugal', 'France'], dtype='object', name='Country')

Si pasamos como argumento el nombre de la columna del índice obtenemos resultados semejantes:

data.index.get_level_values("Year")

Int64Index([2018, 2018, 2018, 2019, 2019, 2019], dtype='int64', name='Year')

data.index.get_level_values("Country")

Index(['Spain', 'Portugal', 'France', 'Spain', 'Portugal', 'France'], dtype='object', name='Country')