Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erhalte ich eine Union von Strings mit Pandas GroupBy?

Wie erhalte ich eine Union von Strings mit Pandas GroupBy?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 09:50:03289Durchsuche

How to Obtain a Union of Strings with Pandas GroupBy?

Pandas GroupBy: Erhalten einer Union von Strings

Im Kontext von Pandas bietet die Groupby-Funktion eine praktische Möglichkeit, Daten basierend auf zu gruppieren bestimmte Spalten und führen Sie Berechnungen für die resultierenden Gruppen durch. Beim Umgang mit Zeichenfolgenspalten liefern die Standardaggregationsfunktionen wie sum() jedoch möglicherweise nicht immer die gewünschten Ergebnisse.

Angenommen, wir haben einen DataFrame mit den Spalten „A“, „B“ und „C“. wobei „C“ Zeichenfolgenwerte enthält. Wir können groupby("A")["C"].sum() verwenden, um eine verkettete Zeichenfolge für jede Gruppe zu erhalten:

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

# Output:
# A
# 1    Thisstring
# 2           is!
# 3             a
# 4        random
# Name: C, dtype: object</code>

Um eine Vereinigung von Zeichenfolgen zu erhalten (d. h. die eindeutigen Zeichenfolgen in jeder Gruppe). Gruppe) können wir eine benutzerdefinierte Funktion verwenden, die die Elemente der Spalte „C“ durchläuft und eine durch Kommas getrennte Zeichenfolge erstellt, die von geschweiften Klammern umgeben ist.

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

Ein anderer Ansatz besteht darin, die Funktion „Anwenden“ zusammen mit a zu verwenden Lambda-Ausdruck:

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

Bei Anwendung auf einen größeren DataFrame kann die benutzerdefinierte Funktion verwendet werden, um eine Serie zurückzugeben, die die gewünschte Vereinigung von Zeichenfolgen für jede Gruppe enthält:

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

Durch die Verwendung Mit benutzerdefinierten Funktionen oder der Apply-Funktion mit einem Lambda-Ausdruck können wir mit Pandas Daten, die Zeichenfolgenspalten enthalten, manipulieren und spezifische Ergebnisse daraus erhalten. Die oben genannten Methoden bieten praktische Möglichkeiten, die eindeutigen Zeichenfolgen in jeder Gruppe zu kombinieren und sie in einem gewünschten Format zurückzugeben.

Das obige ist der detaillierte Inhalt vonWie erhalte ich eine Union von Strings mit Pandas GroupBy?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn