Maison  >  Article  >  développement back-end  >  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
Patricia Arquetteoriginal
2024-10-28 06:41:30660parcourir

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>

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()

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!

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