Wie kann ich Zeichenfolgen innerhalb von Pandas Groupby für eindeutige Werte kombinieren?

Susan Sarandon
Freigeben: 2024-10-25 00:27:02
Original
293 Leute haben es durchsucht

How Can I Combine Strings Within Pandas Groupby for Unique Values?

So erhalten Sie eine Vereinigung von Zeichenfolgen mit Pandas Groupby

Beim Gruppieren von Daten mit der Groupby-Methode von Pandas können numerische Spalten einfach mit aggregiert werden Funktionen wie Summe. Das Aggregieren von Zeichenfolgenspalten stellt jedoch eine Herausforderung dar, da eine einfache Verkettung nicht immer erwünscht ist. In diesem Artikel werden Methoden zum Erhalten einer Vereinigung von Zeichenfolgen innerhalb von Gruppen untersucht.

Problem:

Betrachten Sie den folgenden DataFrame:

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

Anwenden von df. groupby("A")["B"].sum() gibt die Summe der numerischen Werte in Spalte B für jede Gruppe zurück. Der Aufruf von df.groupby("A")["C"].sum() für die Zeichenfolgenspalte C funktioniert jedoch nicht wie erwartet, was zu einer Verkettung von Zeichenfolgen führt.

Lösung:

Benutzerdefinierte Funktion:

Ein Ansatz besteht darin, eine benutzerdefinierte Funktion zu definieren, die Zeichenfolgenwerte innerhalb von Gruppen aggregiert. Diese Funktion kann dann mit der Methode apply() auf den DataFrame angewendet werden. Zum Beispiel:

<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>
Nach dem Login kopieren

Dies gibt einen DataFrame mit der Vereinigung der Zeichenfolgen in Spalte C für jede Gruppe zurück, wobei die Zeichenfolgen in geschweiften Klammern enthalten sind.

Lambda mit . sum():

Eine andere Methode besteht darin, eine Lambda-Funktion auf das Groupby-Objekt anzuwenden, wobei .sum() für numerische Spalten und eine benutzerdefinierte Verkettung für Zeichenfolgenspalten verwendet wird:

<code class="python">df.groupby('A').apply(lambda x: x.sum())</code>
Nach dem Login kopieren

Dadurch wird ein DataFrame zurückgegeben, der die Summe numerischer Werte und verketteter Zeichenfolgen enthält. Um die Vereinigung von Zeichenfolgen zu erhalten, können Sie die Zeichenfolgenmanipulation innerhalb der Lambda-Funktion verwenden.

Überlegungen zur Leistung:

Es ist wichtig zu beachten, dass die Anwendung einer benutzerdefinierten Funktion auf eine Groupby Das Objekt ist langsamer als die Verwendung von Aggregationsfunktionen für numerische Spalten. Bei großen Datensätzen sollte dieser Leistungskompromiss berücksichtigt werden.

Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen innerhalb von Pandas Groupby für eindeutige Werte kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!