Pandas : Comment diviser une colonne de listes en plusieurs colonnes
Vous pouvez utiliser la syntaxe de base suivante pour diviser une colonne de listes en plusieurs colonnes dans un DataFrame pandas :
#split column of lists into two new columns
split = pd.DataFrame(df['my_column'].to_list(), columns = ['new1', 'new2'])
#join split columns back to original DataFrame
df = pd.concat([df, split], axis=1)
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : diviser une colonne de listes en plusieurs colonnes dans Pandas
Supposons que nous ayons le DataFrame pandas suivant dans lequel la colonne appelée points contient des listes de valeurs :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['Mavs', 'Heat', 'Kings', 'Suns'], 'points': [[99, 105], [94, 113], [99, 97], [87, 95]]}) #view DataFrame print(df) team points 0 Mavs [99, 105] 1 Heat [94, 113] 2 Kings [99, 97] 3 Suns [87, 95]
Nous pouvons utiliser la syntaxe suivante pour créer un nouveau DataFrame dans lequel la colonne des points est divisée en deux nouvelles colonnes appelées game1 et game2 :
#split column of lists into two new columns
split = pd.DataFrame(df['my_column'].to_list(), columns = ['new1', 'new2'])
#view DataFrame
print(split)
game1 game2
0 99 105
1 94 113
2 99 97
3 87 95
Si nous le souhaitons, nous pouvons ensuite rejoindre ce DataFrame divisé avec le DataFrame d’origine en utilisant la fonction concat() :
#join split columns back to original DataFrame
df = pd.concat([df, split], axis=1)
#view updated DataFrame
print(df)
team points game1 game2
0 Mavs [99, 105] 99 105
1 Heat [94, 113] 94 113
2 Kings [99, 97] 99 97
3 Suns [87, 95] 87 95
Enfin, nous pouvons supprimer la colonne de points d’origine du DataFrame si nous le souhaitons :
#drop original points column
df = df.drop('points', axis=1)
#view updated DataFrame
print(df)
team game1 game2
0 Mavs 99 105
1 Heat 94 113
2 Kings 99 97
3 Suns 87 95
Le résultat final est un DataFrame dans lequel la colonne de points d’origine des listes est désormais divisée en deux nouvelles colonnes appelées game1 et game2 .
Remarque : Si votre colonne de listes contient un nombre impair de valeurs dans chaque liste, les pandas rempliront simplement les valeurs manquantes avec des valeurs NaN lors de la division des listes en colonnes.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment imprimer le DataFrame Pandas sans index
Comment afficher toutes les lignes d’un DataFrame Pandas
Comment vérifier le type de toutes les colonnes dans Pandas DataFrame