Comment aplatir MultiIndex dans Pandas (avec exemples)



Vous pouvez utiliser la syntaxe de base suivante pour aplatir un MultiIndex dans les pandas :

#flatten all levels of MultiIndex
df.reset_index(inplace=True)

#flatten specific levels of MultiIndex
df.reset_index(inplace=True, level = ['level_name'])

Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.

Exemple 1 : Aplatir tous les niveaux de MultiIndex dans Pandas

Supposons que nous ayons le DataFrame pandas MultiIndex suivant :

import pandas as pd

#create DataFrame
index_names = pd.MultiIndex.from_tuples([('Level1','Lev1', 'L1'),
                                       ('Level2','Lev2', 'L2'),
                                       ('Level3','Lev3', 'L3'),
                                       ('Level4','Lev4', 'L4')],
                                       names=['Full','Partial', 'ID'])

data = {'Store': ['A','B','C','D'],
        'Sales': [12, 44, 29, 35]}

df = pd.DataFrame(data, columns = ['Store','Sales'], index=index_names)

#view DataFrame
df

			Store	Sales
Full	Partial	ID		
Level1	Lev1	L1	A	17
Level2	Lev2	L2	B	22
Level3	Lev3	L3	C	29
Level4	Lev4	L4	D	35

Nous pouvons utiliser la syntaxe suivante pour aplatir chaque niveau du MultiIndex en colonnes du DataFrame :

#flatten every level of MultiIndex 
df.reset_index(inplace=True)

#view updated DataFrame
df

        Full	Partial	ID	Store	Sales
0	Level1	Lev1	L1	A	12
1	Level2	Lev2	L2	B	44
2	Level3	Lev3	L3	C	29
3	Level4	Lev4	L4	D	35

Notez que chaque niveau du MultiIndex est désormais une colonne dans le DataFrame.

Exemple 2 : Aplatir des niveaux spécifiques de MultiIndex dans Pandas

Supposons que nous ayons le même DataFrame pandas que l’exemple précédent :

#view DataFrame
df

			Store	Sales
Full	Partial	ID		
Level1	Lev1	L1	A	12
Level2	Lev2	L2	B	44
Level3	Lev3	L3	C	29
Level4	Lev4	L4	D	35

Le code suivant montre comment aplatir un seul niveau spécifique du MultiIndex :

#flatten 'ID' level only
df.reset_index(inplace=True, level = ['ID'])

#view updated DataFrame
df

		ID	Store	Sales
Full	Partial			
Level1	Lev1	L1	A	12
Level2	Lev2	L2	B	44
Level3	Lev3	L3	C	29
Level4	Lev4	L4	D	35

Et le code suivant montre comment aplatir plusieurs niveaux spécifiques du MultiIndex :

#flatten 'ID' level only
df.reset_index(inplace=True, level = ['Partial', 'ID'])

#view updated DataFrame
df

	Partial	 ID	Store	Sales
Full				
Level1	Lev1	 L1	A	12
Level2	Lev2	 L2	B	44
Level3	Lev3	 L3	C	29
Level4	Lev4	 L4	D	35

Ressources additionnelles

Les didacticiels suivants expliquent comment exécuter d’autres fonctions courantes dans les pandas :

Comment convertir un index en colonne dans Pandas
Comment renommer l’index dans Pandas
Comment définir la colonne comme index dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *