Comment utiliser la fonction Pandas éclater() (avec exemples)
Vous pouvez utiliser la fonction pandas éclater() pour transformer chaque élément d’une liste en ligne dans un DataFrame.
Cette fonction utilise la syntaxe de base suivante :
df.explode('variable_to_explode')
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : utilisez la fonction explosive() avec Pandas DataFrame
Supposons que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']], 'position':['Guard', 'Forward', 'Center'], 'points': [7, 14, 19]}) #view DataFrame df team position points 0 [A, B, C] Guard 7 1 [D, E, F] Forward 14 2 [G, H, I] Center 19
Notez que la colonne équipe contient des listes de noms d’équipe.
Nous pouvons utiliser la fonction éclater() pour exploser chaque élément de chaque liste en une ligne :
#explode team column
df.explode('team')
team position points
0 A Guard 7
0 B Guard 7
0 C Guard 7
1 D Forward 14
1 E Forward 14
1 F Forward 14
2 G Center 19
2 H Center 19
2 I Center 19
Notez que la colonne équipe ne contient plus de listes. Nous avons « éclaté » chaque élément de chaque liste en une ligne.
Notez également que certaines lignes ont désormais la même valeur d’index.
Nous pouvons utiliser la fonction reset_index() pour réinitialiser l’index lors de l’éclatement de la colonne team :
#explode team column and reset index of resulting dataFrame
df.explode('team').reset_index(drop=True)
team position points
0 A Guard 7
1 B Guard 7
2 C Guard 7
3 D Forward 14
4 E Forward 14
5 F Forward 14
6 G Center 19
7 H Center 19
8 I Center 19
Notez que chaque ligne a désormais une valeur d’index unique.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment diviser une colonne de chaîne dans Pandas en plusieurs colonnes
Comment diviser le DataFrame Pandas en plusieurs DataFrames
Comment diviser le DataFrame Pandas par valeur de colonne