Spalte zum GroupBy-DataFrame hinzufügen mithilfe der Pandas-Transformation
Beim Arbeiten mit Groupby-Vorgängen in Pandas ist es oft nützlich, dem eine neue Spalte hinzuzufügen resultierender Datenrahmen. Eine Methode, dies zu erreichen, ist die Verwendung der Funktion .map(), wie im Beispiel gezeigt. Ein alternativer und einfacherer Ansatz besteht jedoch darin, die Funktion .transform() zu verwenden. Mit
.transform() können wir eine Funktion auf jede Gruppe im Datenrahmen anwenden und eine Serie mit den Ergebnissen zurückgeben. Die zurückgegebene Serie verfügt über einen Index, der am ursprünglichen Datenrahmen ausgerichtet ist.
Zur Veranschaulichung beginnen wir mit dem bereitgestellten Datenrahmen:
df = pd.DataFrame({'c': [1, 1, 1, 2, 2, 2, 2], 'type': ['m', 'n', 'o', 'm', 'm', 'n', 'n']})
Unser Ziel ist es, die Werte des Typs für jedes c zu zählen und eine Spalte mit der Größe c hinzuzufügen.
g = df.groupby('c')['type'].value_counts().reset_index(name='t')
Dieser Code zählt die Werte für jede Gruppe und erstellt eine neue Spalte mit dem Namen t.
Um die Größenspalte mit .transform() hinzuzufügen, können wir Führen Sie Folgendes aus:
g['size'] = df.groupby('c')['type'].transform('size')
.transform('size') wendet die Größenfunktion auf jede Gruppe an, die die Größe jeder Gruppe zurückgibt. Die resultierende Serie wird am Index des ursprünglichen Datenrahmens ausgerichtet, sodass wir sie als neue Spalte zu g hinzufügen können.
Die Ausgabe ist ein Datenrahmen mit einer zusätzlichen Spalte namens size:
c type t size 0 1 m 1 3 1 1 n 1 3 2 1 o 1 3 3 2 m 2 4 4 2 n 2 4
Die Verwendung von .transform() bietet eine präzisere und einfachere Möglichkeit, eine Spalte aus einer Groupby-Aggregation wieder zum ursprünglichen Datenrahmen hinzuzufügen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3