Maison >développement back-end >Tutoriel Python >Comment décompresser une colonne de type liste en lignes distinctes dans un DataFrame ?

Comment décompresser une colonne de type liste en lignes distinctes dans un DataFrame ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 22:51:03885parcourir

How to Unpack a List-Like Column into Separate Rows in a DataFrame?

Décompression d'une colonne de type liste en lignes séparées dans un DataFrame

Question :

Comment pouvons-nous transformer un DataFrame cellule contenant une liste en lignes individuelles pour chaque valeur de cette liste ?

Exemple :

Considérez le DataFrame suivant :

name opponent nearest_neighbors
A.J. Price 76ers ['Zach LaVine', 'Jeremy Lin', 'Nate Robinson', 'Isaia']

Notre objectif consiste à "exploser" la colonne les plus proches_neighbours, en créant une nouvelle ligne pour chaque valeur de la liste.

Réponse :

Dans la version pandas 0.25 et ultérieure, l'explosion( ) rend cette opération simple :

import pandas as pd

df = (pd.DataFrame({'name': ['A.J. Price'] * 3, 
                    'opponent': ['76ers', 'blazers', 'bobcats'], 
                    'nearest_neighbors': [['Zach LaVine', 'Jeremy Lin', 'Nate Robinson', 'Isaia']] * 3})
      .set_index(['name', 'opponent']))

df.explode('nearest_neighbors')

Sortie :

name opponent nearest_neighbors
A.J. Price 76ers Zach LaVine
A.J. Price 76ers Jeremy Lin
A.J. Price 76ers Nate Robinson
A.J. Price 76ers Isaia
A.J. Price blazers Zach LaVine
A.J. Price blazers Jeremy Lin
A.J. Price blazers Nate Robinson
A.J. Price blazers Isaia
A.J. Price bobcats Zach LaVine
A.J. Price bobcats Jeremy Lin
A.J. Price bobcats Nate Robinson
A.J. Price bobcats Isaia

La méthode éclater() déroule efficacement chaque liste dans la colonne les plus proches_neighbours, créant une nouvelle ligne pour chaque valeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn