Maison  >  Article  >  développement back-end  >  Comment obtenir une union de chaînes avec Pandas GroupBy ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 09:50:03289parcourir

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>

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>

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>

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>

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!

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