Multi-índices a partir de una lista de arrays

El primer método es aquel en el que creamos el multi-índice indicando cada una de las columnas que lo van a formar. Por ejemplo:

index = pd.MultiIndex.from_arrays(
    [
        [2018, 2018, 2018, 2019, 2019, 2019],
        ["Spain", "Portugal", "France", "Spain", "Portugal", "France"]
    ],
    names = ["Year", "Country"]
)
index

MultiIndex([(2018,    'Spain'),
            (2018, 'Portugal'),
            (2018,   'France'),
            (2019,    'Spain'),
            (2019, 'Portugal'),
            (2019,   'France')],
           names=['Year', 'Country'])

Como vemos, el parámetro names nos permite especificar los nombres de los niveles del índice jerárquico.

Si llevamos este multi-índice a un dataframe obtenemos el siguiente resultado:

data = pd.DataFrame(data = [18, 20, 10, 15, 12, 18], index = index, columns = ["Sales"])
data

DataFrame con multi-índice