5 votes

Développer une colonne de listes en plusieurs lignes dans Pandas

J'ai un dataframe Pandas dont l'une des colonnes est une liste. J'aimerais développer cette liste.

Comment faire ?

Commencez par :

0 [{ first: 'jon', last: 'McSmith' }, { first: 'Jennifer', last: 'Foobar'}]
1 [{ first: 'dan', last: 'Raizman' }, { first: 'Alden', last: 'Lowe'}]

Name: players, dtype: object

Terminer par :

   first         last
--------------------------
0  Jon           McSmith
1  Jennifer      Foobar
2  Dan           Raizman
3  Alden         Lowe

9voto

Shubham Sharma Points 39381

Utilisation np.hstack pour empiler les listes dans la colonne players horizontalement et créez un nouveau cadre de données :

df1 = pd.DataFrame(np.hstack(df['players']).tolist())

Ou utiliser Series.explode (disponible dans les versions de pandas >= 0.25 ),

df1 = pd.DataFrame(df['players'].explode().tolist())

Une autre option consiste à utiliser itertools.chain comme suggéré par @cs95

from itertools import chain

df1 = pd.DataFrame(chain.from_iterable(df['players']))

Résultat :

print(df1)

      first     last
0       jon  McSmith
1  Jennifer   Foobar
2       dan  Raizman
3     Alden     Lowe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X