Maison >développement back-end >Tutoriel Python >Comment aplatir un DataFrame Pandas GroupBy MultiIndex ?

Comment aplatir un DataFrame Pandas GroupBy MultiIndex ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-02 00:01:09335parcourir

How to Flatten a Pandas GroupBy MultiIndex DataFrame?

Conversion d'une sortie Pandas GroupBy MultiIndex en un DataFrame

Lors de l'exécution d'une opération groupby sur un DataFrame pandas avec plusieurs colonnes d'index, le résultat L'objet est un DataFrame avec un index hiérarchique. Cela peut être gênant si vous souhaitez accéder aux données sous forme de lignes individuelles.

Voici un exemple simple :

df1 = pd.DataFrame({"City": ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"], "Name": ["Alice", "Bob", "Mallory", "Mallory", "Bob", "Mallory"]})

g1 = df1.groupby(["Name", "City"]).count()

La sortie de g1 est un DataFrame avec un index hiérarchique :

                  City  Name
Name    City
Alice   Seattle      1     1
Bob     Seattle      2     2
Mallory Portland     2     2
        Seattle      1     1

Pour reconvertir cela en DataFrame avec des lignes individuelles, vous pouvez utiliser soit add_suffix et reset_index méthodes :

g1.add_suffix("_Count").reset_index()

Cela ajoutera un suffixe aux colonnes d'index et réinitialisera l'index pour créer un DataFrame plat :

      Name      City  City_Count  Name_Count
0    Alice   Seattle           1           1
1      Bob   Seattle           2           2
2  Mallory  Portland           2           2
3  Mallory   Seattle           1           1

Ou, vous pouvez utiliser la méthode size et réinitialiser_index pour comptez le nombre de lignes dans chaque groupe et créez un nouveau DataFrame :

DataFrame({'count': df1.groupby(["Name", "City"]).size()}).reset_index()

Cela créera un DataFrame avec un seul index colonne :

      Name      City  count
0    Alice   Seattle      1
1      Bob   Seattle      2
2  Mallory  Portland      2
3  Mallory   Seattle      1

L'approche que vous utiliserez dépendra de vos besoins spécifiques.

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