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
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')