Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verkette ich Zeichenfolgen innerhalb von Gruppen in einem Pandas-DataFrame mithilfe von „groupby“?

Wie verkette ich Zeichenfolgen innerhalb von Gruppen in einem Pandas-DataFrame mithilfe von „groupby“?

Barbara Streisand
Barbara StreisandOriginal
2024-10-24 18:35:04503Durchsuche

How to Concatenate Strings within Groups in a Pandas DataFrame Using `groupby`?

Pandas Groupby: Erhalten einer String-Verkettung

Beim Arbeiten mit einem DataFrame, bei dem eine der Spalten Strings enthält, ist die Standardfunktion sum() führt möglicherweise nicht immer zum gewünschten Ergebnis. In solchen Szenarien, in denen das Ziel darin besteht, Zeichenfolgen für jede Gruppe zu verketten, finden Sie hier eine umfassende Erklärung und Lösung.

Berücksichtigen Sie den folgenden DataFrame:

   A         B       C
0  1  0.749065    This
1  2  0.301084      is
2  3  0.463468       a
3  4  0.643961  random
4  1  0.866521  string
5  2  0.120737       !

Standardmäßig wird sum() angewendet in Spalte „C“ führt zu folgender Ausgabe:

A
1    Thisstring
2           is!
3             a
4        random
dtype: object

Um die gewünschte Ausgabe zu erhalten, bei der Zeichenfolgen für jede Gruppe verkettet werden, gibt es mehrere Ansätze:

Verwenden von apply () Funktion:

Eine Methode besteht darin, eine benutzerdefinierte Funktion auf das Groupby-Objekt anzuwenden. Diese Funktion kann die Zeichenfolgen innerhalb jeder Gruppe verketten.

<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)</code>

Alternativ:

Sie können das gleiche Ergebnis erzielen, indem Sie explizit die Funktionen apply() und Lambda verwenden:

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

Anwenden benutzerdefinierter Logik:

Wenn eine Anpassung erforderlich ist, z. B. das Entfernen leerer Zeichenfolgen oder das Anwenden bestimmter Trennzeichen, können Sie Ihre eigene Logik innerhalb der Lambda-Funktion implementieren.

Um beispielsweise leere Zeichenfolgen zu entfernen:

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

Überlegungen zur Leistung:

Beachten Sie, dass die Anwendung benutzerdefinierter Funktionen langsamer sein kann als die Verwendung von integrierte sum()-Funktion. Daher wird empfohlen, die Auswirkungen auf die Leistung basierend auf Ihren spezifischen Anforderungen zu berücksichtigen.

Das obige ist der detaillierte Inhalt vonWie verkette ich Zeichenfolgen innerhalb von Gruppen in einem Pandas-DataFrame mithilfe von „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