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!