Maison > développement back-end > Tutoriel Python > Comment diviser une cellule en plusieurs lignes dans une trame de données Pandas en fonction de valeurs séparées par des virgules ?

Comment diviser une cellule en plusieurs lignes dans une trame de données Pandas en fonction de valeurs séparées par des virgules ?

Patricia Arquette
Libérer: 2024-10-28 06:41:30
original
806 Les gens l'ont consulté

How to Split a Cell into Multiple Rows in a Pandas Dataframe Based on Comma-Separated Values?

Diviser la cellule en plusieurs lignes dans la trame de données Pandas

Problème :

Vous avez un Pandas dataframe avec des données de commandes où chaque commande contient plusieurs packages stockés sous forme de chaînes séparées par des virgules dans les colonnes « package » et « package_code ». Votre objectif est de diviser les données des packages et de créer une nouvelle ligne pour chaque package avec les détails de la commande correspondants.

Solution :

Pour versions Pandas >= 0,25 :

<code class="python">df.set_index(['order_id', 'order_date']) \
    .apply(lambda x: x.str.split(',').explode()) \
    .reset_index()</code>
Copier après la connexion

Pour les versions Pandas <= 0,24 :

<code class="python">df.set_index(['order_date', 'order_id']) \
    .stack() \
    .str.split(',', expand=True) \
    .stack() \
    .unstack(-2) \
    .reset_index(-1, drop=True) \
    .reset_index()
Copier après la connexion

Explication :

1. Définir l'index : Définissez les colonnes qui doivent rester intactes ("order_id" et "order_date") comme index du dataframe.

2. Diviser et empiler :

  • Pour Pandas >= 0,25 : utilisez apply(lambda x: x.str.split(',').explode()) pour diviser les éléments séparés par des virgules colonnes 'package' et 'package_code' et développez-les en plusieurs lignes.
  • Pour Pandas <= 0.24 : utilisez à nouveau stack(), str.split() et stack() pour diviser et empiler les données .
  • 3. Dépiler et réinitialiser l'index :

    • Dépiler à l'avant-dernier niveau (-2) pour créer de nouvelles colonnes pour les données du package fractionné et du code du package.
    • Réinitialiser l'index à annulez le changement d'index et obtenez la trame de données finale.

    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