Maison > développement back-end > Tutoriel Python > Comment exploser des listes imbriquées en lignes individuelles dans une trame de données Pandas ?

Comment exploser des listes imbriquées en lignes individuelles dans une trame de données Pandas ?

Mary-Kate Olsen
Libérer: 2024-11-12 03:10:02
original
528 Les gens l'ont consulté

How to Explode Nested Lists into Individual Rows in a Pandas Dataframe?

Explosion de listes imbriquées en lignes individuelles dans une trame de données Pandas

Dans le domaine de la manipulation de données avec des pandas, il est souvent nécessaire de restructurer les données stockés sous forme de listes imbriquées dans des lignes individuelles. Considérons une trame de données où la colonne "nearest_neighbours" contient des listes de valeurs. L'objectif est "d'exploser" ces listes, en créant des lignes distinctes pour chaque valeur dans la liste.

Pandas 0.25 simplifie l'éclatement de la liste avec la méthode éclater()

Pour les pandas Dans les versions 0.25 et ultérieures, le développement des listes en colonnes est considérablement simplifié avec l'introduction de la méthode éclater(). Pour démontrer sa fonctionnalité, recréons l'exemple de dataframe :

import pandas as pd

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

# Set the index for easier reference
df = df.set_index(['name', 'opponent'])
Copier après la connexion

Explosion des listes imbriquées

À l'aide de la méthode exploser(), nous pouvons diviser les "nearest_neighbours" colonne par ses éléments de liste, en créant des lignes distinctes pour chaque valeur :

# Explode the list-like column
df_exploded = df.explode('nearest_neighbors')
Copier après la connexion

Sortie après explosion

print(df_exploded)
Copier après la connexion
                    nearest_neighbors
name       opponent                  
A.J. Price 76ers          Zach LaVine
           76ers           Jeremy Lin
           76ers        Nate Robinson
           76ers                Isaia
           blazers        Zach LaVine
           blazers         Jeremy Lin
           blazers      Nate Robinson
           blazers              Isaia
           bobcats        Zach LaVine
           bobcats         Jeremy Lin
           bobcats      Nate Robinson
           bobcats              Isaia
Copier après la connexion

Comme vous pouvez le voir, chaque valeur de la liste dans la colonne "nearest_neighbors" est désormais représenté comme une ligne distincte dans son index d'adversaire correspondant.

Autres méthodes d'expansion de liste

Pour les versions pandas antérieures à 0.25, il existait d'autres approches pour étendre les listes en colonnes. Ces méthodes nécessitaient une combinaison d'opérations telles que l'application, lambda et la compréhension de liste. Cependant, avec l’introduction de la méthode explosive(), ces approches plus complexes ne sont plus nécessaires.

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