Pandas : Comment supprimer MultiIndex dans un tableau croisé dynamique
Pour supprimer un multiIndex d’un tableau croisé dynamique pandas, vous pouvez utiliser l’argument valeurs avec la fonction reset_index() :
pd.pivot_table(df, index='col1', columns='col2', values='col3').reset_index()
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : supprimer MultiIndex dans le tableau croisé dynamique Pandas
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur divers joueurs de basket-ball :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'position': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'], 'points': [4, 4, 6, 8, 9, 5, 5, 12]}) #view DataFrame print(df) team position points 0 A G 4 1 A G 4 2 A F 6 3 A F 8 4 B G 9 5 B F 5 6 B F 5 7 B F 12
Supposons maintenant que nous créions le tableau croisé dynamique suivant pour résumer la valeur moyenne des points par équipe et par poste :
#create pivot table to summarize mean points by team and position
pd.pivot_table(df, index='team', columns='position')
points
position F G
team
A 7.000000 4.0
B 7.333333 9.0
Le tableau croisé dynamique résultant résume la valeur moyenne des points par équipe et par position , mais contient un multiIndex.
Pour supprimer le multiIndex, nous pouvons utiliser l’argument values dans la fonction pivot_table() et ajouter reset_index() à la fin :
#create pivot table to summarize mean points by team and position
pd.pivot_table(df, index='team', columns='position', values='points').reset_index()
position team F G
0 A 7.000000 4.0
1 B 7.333333 9.0
Le tableau croisé dynamique résultant résume la valeur moyenne des points par équipe et par position et n’a plus de multiIndex.
Notez que la fonction pivot_table() calcule la valeur moyenne par défaut.
Pour calculer une autre métrique, telle que la somme, utilisez l’argument aggfunc comme suit :
#create pivot table to summarize sum of points by team and position
pd.pivot_table(df, index='team', columns='position', values='points',
aggfunc='sum').reset_index()
position team F G
0 A 14 8
1 B 22 9
Le tableau croisé dynamique résultant résume la somme des valeurs des points par équipe et par position et n’a pas non plus de multiIndex.
Remarque : Vous pouvez trouver la documentation complète de la fonction pandas pivot_table() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Pandas : Comment ajouter un filtre au tableau croisé dynamique
Pandas : Comment trier le tableau croisé dynamique par valeurs dans la colonne
Pandas : Comment ajouter des sous-totaux au tableau croisé dynamique