Beibehalten anderer Spalten während Groupby-Vorgängen
Beim Durchführen einer Groupby-Operation für einen Pandas-Datenrahmen ist es häufig erforderlich, Spalten beizubehalten, die nicht vorhanden sind am Gruppierungs- oder Aggregationsprozess beteiligt sind. Standardmäßig werden diese anderen Spalten gelöscht, wenn der Vorgang abgeschlossen ist. Dies kann problematisch sein, wenn die beibehaltenen Spalten wertvolle Informationen enthalten.
Bedenken Sie den folgenden Datenrahmen:
item diff otherstuff 0 1 2 1 1 1 1 2 2 1 3 7 3 2 -1 0 4 2 1 3 5 2 4 9 6 2 -6 2 7 3 0 0 8 3 2 9
Wenn wir den Datenrahmen nach der Spalte „item“ gruppieren und den Mindestwert der Spalte „diff“ ermitteln würden, würde der resultierende Datenrahmen so aussehen:
item diff 0 1 1 1 2 -6 2 3 0
Beachten Sie, dass die Spalte „otherstuff“ gelöscht wurde. Um diese Spalte beizubehalten, können wir die Methode idxmin() verwenden, um die Indizes der Elemente mit minimalem Diff abzurufen, und diese dann auswählen:
>>> df.loc[df.groupby("item")["diff"].idxmin()] item diff otherstuff 1 1 1 2 6 2 -6 2 7 3 0 0 [3 rows x 3 columns]
Eine andere Methode besteht darin, den Datenrahmen nach der Spalte „diff“ zu sortieren und dann das erste Element in jeder Elementgruppe zu verwenden:
>>> df.sort_values("diff").groupby("item", as_index=False).first() item diff otherstuff 0 1 1 2 1 2 -6 2 2 3 0 0 [3 rows x 3 columns]
Beide Methoden führen zum gewünschten Ergebnis, behalten aber die Spalte „andere Dinge“ bei. Beachten Sie, dass die resultierenden Indizes unterschiedlich sein können, obwohl der Zeileninhalt derselbe ist.
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