Fractionner les valeurs de la liste des colonnes du dataframe pandas pour dupliquer les lignes

Aniss Chohra

J'ai un dataframe qui ressemble à ce qui suit:

publication_title    authors                             type ...
title 1              ['author1', 'author2', 'author3']   proceedings
title 2              ['author4', 'author5']              collections
title 3              ['author6', 'author7']              books
.
.
. 

Ce que je veux faire, c'est prendre la colonne `` auteurs '' et diviser la liste à l'intérieur en plusieurs lignes en dupliquant toutes les autres colonnes, et je veux également stocker les résultats dans une nouvelle colonne nommée: `` auteur '' et conserver la colonne d'origine .

Ce qui suit décrit exactement ce que je veux réaliser:

publication_title    authors                             author          type ...
title 1              ['author1', 'author2', 'author3']   author1         proceedings
title 1              ['author1', 'author2', 'author3']   author2         proceedings
title 1              ['author1', 'author2', 'author3']   author3         proceedings
title 2              ['author4', 'author5']              author4         collections
title 2              ['author4', 'author5']              author5         collections
title 3              ['author6', 'author7']              author6         books
title 3              ['author6', 'author7']              author7         books
.
.
. 

J'ai essayé d'y parvenir en utilisant la méthode d'explosion de pandas DataFrame mais je ne trouve pas de moyen de stocker les résultats dans une nouvelle colonne.

Merci pour l'aide.

Erfan

Depuis que pandas 0.25.0nous avons la explodeméthode. Tout d'abord, nous dupliquons la authorscolonne et la renommons en même temps en utilisant, assignpuis nous éclatons cette colonne en lignes et dupliquons les autres colonnes:

df.assign(author=df['authors']).explode('author')

Production

  publication_title                      authors         type   author
0           title_1  [author1, author2, author3]  proceedings  author1
0           title_1  [author1, author2, author3]  proceedings  author2
0           title_1  [author1, author2, author3]  proceedings  author3
1           title_2           [author4, author5]  collections  author4
1           title_2           [author4, author5]  collections  author5
2           title_3           [author6, author7]        books  author6
2           title_3           [author6, author7]        books  author7

Si vous souhaitez supprimer l'index dupliqué, utilisez reset_index:

df.assign(author=df['authors']).explode('author').reset_index(drop=True)

Production

  publication_title                      authors         type   author
0           title_1  [author1, author2, author3]  proceedings  author1
1           title_1  [author1, author2, author3]  proceedings  author2
2           title_1  [author1, author2, author3]  proceedings  author3
3           title_2           [author4, author5]  collections  author4
4           title_2           [author4, author5]  collections  author5
5           title_3           [author6, author7]        books  author6
6           title_3           [author6, author7]        books  author7

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

faire correspondre les colonnes du dataframe avec des valeurs de liste et ajouter le dataframe avec les lignes correspondantes

Mettre à jour les lignes dans Pandas Dataframe en fonction des valeurs de la liste

Pandas: compter la proportion de zéros dans les lignes et les colonnes du dataframe

Comparaison des lignes et des colonnes correspondantes de Pandas Dataframe pour les différences

Comment supprimer les valeurs vides du pandas DataFrame d'une liste de types de colonnes

Supprimer les colonnes et les lignes contenant des valeurs spécifiques dans pandas dataframe

Générer des lignes dans un dataframe pandas pour compenser les valeurs manquantes d'une colonne (ou de plusieurs colonnes)

Comment créer des lignes pour des valeurs uniques dans des colonnes dans les pandas?

SQL: Comment «fractionner» les lignes d'une table par les valeurs de certaines colonnes?

Pandas dataframe dédupliquer les lignes avec la logique de colonne

Pandas df réorganise les lignes et les colonnes en fonction de la liste d'index des entiers

Renommer les colonnes du dataframe en fonction des noms de la liste dans R

Extraire les lignes où les listes de colonnes contiennent certaines valeurs dans un dataframe pandas

Python Pandas: comparez les lignes de deux csv (dataframe) pour des valeurs similaires le long d'une colonne et renvoyez le contenu des lignes (colonnes) avec des éléments similaires

Fonction pour renvoyer des lignes pour une plage de valeurs entre les colonnes

Modifier les valeurs des colonnes de pandas dataframe en fonction d'autres colonnes de dataframe

Comment faire pivoter un dataframe avec des pandas pour que les colonnes variables deviennent des lignes?

Trier les lignes de dataframe en fonction des valeurs dans des colonnes spécifiques

Sélectionnez TOUTES les lignes où les valeurs de colonne Pandas DataFrame dans une liste

fonction personnalisée pour filtrer les valeurs dans les colonnes de pandas dataframe

Transformer les colonnes du dataframe Pandas en lignes

suppression de ces lignes sans valeurs pour toutes les colonnes

Supprimer les doublons pour les lignes avec des valeurs de nom interchangeables (Pandas, Python)

Filtrer les colonnes du bloc de données en fonction des valeurs de liste

Additionner les lignes et dupliquer les valeurs

Trier deux colonnes et créer de nouvelles colonnes pour les valeurs triées à partir du dataframe à l'aide de pandas

les pandas développent la colonne dataframe avec des tuples, en plusieurs colonnes et lignes

Réorganiser les lignes du dataframe pandas en fonction de la liste et en gardant l'ordre

Sélection aléatoire de k valeurs à partir de n colonnes du datafarme pour chaque ligne et les stocker dans k colonnes de la même dataframe