Heim > Backend-Entwicklung > Python-Tutorial > Wie finde ich Zeilen mit Maximalwerten innerhalb von Gruppen in Pandas?

Wie finde ich Zeilen mit Maximalwerten innerhalb von Gruppen in Pandas?

DDD
Freigeben: 2024-12-23 16:57:14
Original
289 Leute haben es durchsucht

How to Find Rows with Maximum Values within Groups in Pandas?

Zeilen mit Maximalwerten in Gruppen mithilfe von Groupby abrufen

Bei der Datenanalyse ist es häufig erforderlich, Zeilen mit dem höchsten Wert zu identifizieren für eine bestimmte Spalte innerhalb jeder durch andere Spalten definierten Gruppe. Dieser Vorgang kann bequem mit den Methoden groupby() und transform() von Pandas ausgeführt werden, einer weit verbreiteten Python-Bibliothek zur Datenmanipulation.

Problemstellung

Gegeben Ein Pandas-DataFrame mit Spalten wie „Sp“, „Mt“, „Wert“ und „Anzahl“. Unser Ziel ist es, Zeilen zu extrahieren, die den maximalen „Anzahl“-Wert innerhalb jeder durch „Sp“ definierten Gruppe haben. und 'Mt'-Spalten.

Lösung

Um die gewünschten Zeilen abzurufen, können wir die folgenden Schritte ausführen:

  1. Berechnen Sie die maximale Anzahl für jede Gruppe:

    • Verwenden Sie die Methode „groupby()“. um den DataFrame nach den Spalten „Sp“ und „Mt“ zu gruppieren und dann die Funktion max() auf die Spalte „count“ anzuwenden, um den maximalen Zählwert für jede Gruppe zu bestimmen.
  2. Zeilen mit maximaler Anzahl identifizieren:

    • Verwenden Sie die transform()-Methode, um eine boolesche Wahr/Falsch-Reihe für zurückzugeben jede Zeile, wobei „True“ angibt, dass die Zeile den maximalen Zählwert innerhalb ihrer Gruppe hat.
    • Rufen Sie die ursprünglichen DataFrame-Zeilen ab, die den True-Werten entsprechen, mithilfe der Indizierung.

Beispiel 1

Bedenken Sie Folgendes DataFrame:

Sp Mt Value count
MM1 S1 a 3
MM1 S1 n 2
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 2
MM4 S2 uyi 7

Die Anwendung der oben genannten Schritte führt zu der folgenden Ausgabe:

Sp Mt Value count
MM1 S1 a 3
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM4 S2 uyi 7

Beispiel 2

Mit einem anderen DataFrame:

Sp Mt Value count
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 8
MM4 S2 uyi 8

Die Ausgabe wird:

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

Alternativer Ansatz

Ein alternativer Ansatz besteht darin, dem DataFrame eine Spalte hinzuzufügen, die die maximale Anzahl darstellt jede Gruppe. Dies kann mit den folgenden Schritten erreicht werden:

  1. Berechnen Sie die maximale Anzahl für jede Gruppe mithilfe von df.groupby(['Sp', 'Mt'])['count'].max() Ausdruck.
  2. Fügen Sie dem DataFrame eine neue Spalte mit dem Namen „count_max“ hinzu, indem Sie df['count_max'] = df.groupby(['Sp', ‘Mt’])[‘count’].transform(max) Ausdruck.
  3. Filtern Sie den DataFrame so, dass er nur Zeilen enthält, in denen die Spalte „count“ der Spalte „count_max“ entspricht.

Das obige ist der detaillierte Inhalt vonWie finde ich Zeilen mit Maximalwerten innerhalb von Gruppen in Pandas?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage