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

Ajouter un commentaire

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