Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man Strings innerhalb von Pandas Groupby-Ergebnissen effizient verknüpfen?

Wie kann man Strings innerhalb von Pandas Groupby-Ergebnissen effizient verknüpfen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-16 15:22:11889Durchsuche

How to Efficiently Join Strings Within Pandas Groupby Results?

Pandas Groupby mit Trennzeichen-Join

In Pandas kann die Verwendung der Groupby-Funktion nützlich sein, wenn Sie mit Daten arbeiten, die doppelte Werte enthalten. Wenn Sie jedoch einen zusammengefassten Wert erhalten und gleichzeitig die unterschiedlichen Werte in einer Gruppe beibehalten möchten, kann die Implementierung einer benutzerdefinierten Verknüpfungsoperation erforderlich sein.

Betrachten Sie das folgende Beispiel:

col  val
A    Cat
A    Tiger
B    Ball
B    Bat

Bei Verwendung Wenn die Funktion „groupby“ verwendet wird, um die Spalte „val“ für jeden eindeutigen Wert in „col“ zu summieren, wird die folgende Ausgabe generiert:

A CatTiger
B BallBat

Um ein Trennzeichen einzuführen (z. B. '-') in die verbundenen Werte kann der folgende Code verwendet werden:

df.groupby(['col'])['val'].sum().apply(lambda x: '-'.join(x))

Dieser Ansatz führt jedoch zu einem unerwarteten Ergebnis:

A C-a-t-T-i-g-e-r
B B-a-l-l-B-a-t

Das Problem tritt auf Dies liegt daran, dass die Lambda-Funktion ein Series-Objekt empfängt, das die einzelnen Werte aus der Spalte „val“ anstelle der verketteten Zeichenfolge enthält.

Um dies zu erreichen, kann der folgende alternative Ansatz verwendet werden die gewünschte durch Trennzeichen verbundene Ausgabe:

df.groupby('col')['val'].agg('-'.join)

Dies liefert die Ausgabe:

col
A    Cat-Tiger
B     Ball-Bat
Name: val, dtype: object

Um den Index oder MultiIndex in Spalten zu konvertieren, können Sie die Funktion „reset_index“ verwenden:

df1 = df.groupby('col')['val'].agg('-'.join).reset_index(name='new')

Das obige ist der detaillierte Inhalt vonWie kann man Strings innerhalb von Pandas Groupby-Ergebnissen effizient verknüpfen?. 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