Comment dissocier efficacement plusieurs colonnes de liste dans un DataFrame Pandas ?

Susan Sarandon
Libérer: 2024-11-17 20:58:02
original
436 Les gens l'ont consulté

How to Efficiently Unnest Multiple List Columns in a Pandas DataFrame?

Comment dissocier (exploser) plusieurs colonnes de liste dans un DataFrame pandas de manière efficace

Problème : explosion de colonnes de liste imbriquées dans de grands ensembles de données

Lorsqu'il s'agit de pandas DataFrames, il est parfois nécessaire de « désemboîter » ou « exploser » les colonnes qui contiennent des listes en plusieurs lignes. Cependant, cela peut être une opération coûteuse en termes de calcul, en particulier pour les grands ensembles de données.

Solution : Utiliser pandas >= 1.3

Pour les versions 1.3 et supérieures de pandas, il existe une fonction intégrée appelée DataFrame.explode qui vous permet de dissocier plusieurs colonnes simultanément. Cette fonction nécessite que toutes les colonnes de la liste aient la même longueur. Pour l'utiliser :

df.explode(['B', 'C', 'D', 'E']).reset_index(drop=True)
Copier après la connexion

Solution pour les pandas < 1.3

Pour les anciennes versions de pandas, une approche légèrement plus complexe est requise :

  1. Définissez l'index du DataFrame pour qu'il soit les colonnes qui ne doivent pas être éclatées.
  2. Appliquez Series.explode à chaque colonne à exploser.
  3. Réinitialisez l'index pour obtenir le DataFrame non imbriqué.
df.set_index(['A']).apply(pd.Series.explode).reset_index()
Copier après la connexion

Considérations d'efficacité

Les deux méthodes fournir des solutions efficaces, set_index et explosive étant légèrement plus rapides que DataFrame.explode. Le tableau suivant montre la comparaison des performances :

Method Time (seconds)
DataFrame.explode 0.00259
Set index and explode 0.00127
Stacking approach 0.120

Remarque sur la question en double

Bien que cette question ait été initialement marquée comme un doublon, elle souligne spécifiquement la nécessité d'une méthode efficace capable de gérer de grandes ensembles de données. Les réponses à la question en double n'ont pas répondu de manière adéquate à cette exigence.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal