Comment obtenir une union de chaînes avec Pandas GroupBy ?

Patricia Arquette
Libérer: 2024-10-26 09:50:03
original
287 Les gens l'ont consulté

How to Obtain a Union of Strings with Pandas GroupBy?

Pandas GroupBy : obtention d'une union de chaînes

Dans le contexte de Pandas, la fonction groupby offre un moyen pratique de regrouper des données en fonction de colonnes spécifiques et effectuer des calculs sur les groupes résultants. Cependant, lorsqu'il s'agit de colonnes de chaîne, les fonctions d'agrégation par défaut telles que sum() peuvent ne pas toujours donner les résultats souhaités.

Supposons que nous ayons un DataFrame avec les colonnes « A », « B » et « C », où « C » contient des valeurs de chaîne. Nous pouvons utiliser groupby("A")["C"].sum() pour obtenir une chaîne concaténée pour chaque groupe :

<code class="python">print(df.groupby("A")["C"].sum())

# Output:
# A
# 1    Thisstring
# 2           is!
# 3             a
# 4        random
# Name: C, dtype: object</code>
Copier après la connexion

Pour obtenir une union de chaînes (c'est-à-dire les chaînes uniques dans chaque groupe), nous pouvons utiliser une fonction personnalisée qui parcourt les éléments de la colonne « C » et crée une chaîne séparée par des virgules entourée d'accolades.

<code class="python">def get_string_union(group):
    return "{%s}" % ', '.join(group['C'].unique())

df.groupby('A')['C'].apply(get_string_union)

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>
Copier après la connexion

Une autre approche consiste à utiliser la fonction apply avec un expression lambda :

<code class="python">df.groupby('A')['C'].apply(lambda x: "{%s}" % ', '.join(x))

# Output:
# A
# 1    {This, string}
# 2           {is, !}
# 3               {a}
# 4          {random}
# Name: C, dtype: object</code>
Copier après la connexion

Lorsqu'elle est appliquée à un DataFrame plus grand, la fonction personnalisée peut être utilisée pour renvoyer une série contenant l'union de chaînes souhaitée pour chaque groupe :

<code class="python">def f(x):
     return Series(dict(A = x['A'].sum(), 
                        B = x['B'].sum(), 
                        C = "{%s}" % ', '.join(x['C'])))

df.groupby('A').apply(f)

# Output:
#   A         B               C
# A                             
# 1  2  1.615586  {This, string}
# 2  4  0.421821         {is, !}
# 3  3  0.463468             {a}
# 4  4  0.643961        {random}</code>
Copier après la connexion

En utilisant fonctions personnalisées ou la fonction apply avec une expression lambda, Pandas nous permet de manipuler et d'obtenir des résultats spécifiques à partir de données contenant des colonnes de chaînes. Les méthodes susmentionnées offrent des moyens pratiques de combiner les chaînes uniques de chaque groupe et de les renvoyer dans le format souhaité.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!