Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich Zeilen mit maximalen Zählwerten innerhalb von Gruppen in Pandas?

Wie finde ich Zeilen mit maximalen Zählwerten innerhalb von Gruppen in Pandas?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 03:59:091021Durchsuche

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

Groupby-Daten und Abrufen von Zeilen mit maximalen Zählwerten

Um die Zeilen mit maximalen Zählwerten innerhalb von Gruppen zu ermitteln, können Groupby-Operationen eingesetzt werden ein Pandas DataFrame.

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

Beispiel 1:

Unser Ziel ist es, Zeilen innerhalb jeder Gruppe (definiert durch ['Sp', 'Mt']) zu identifizieren, die Folgendes haben der höchste Zählwert. In Beispiel 1 haben wir die folgende erwartete 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

Um dies zu erreichen, können wir zunächst den maximalen Zählwert für jede Gruppe ermitteln:

df.groupby(['Sp', 'Mt'])['count'].max()

Was Folgendes ergibt:

Sp Mt
MM1 S1 3
MM1 S3 5
MM2 S3 8
MM2 S4 10
MM4 S2 7

Dann werden die Indizes des ursprünglichen DataFrames extrahiert, wobei der Zählwert jeweils dem Maximalwert entspricht Gruppe:

idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
df[idx]

Was die gewünschte Ausgabe ergibt.

Beispiel 2:

In Beispiel 2 ist die erwartete Ausgabe wie folgt:

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

In diesem Szenario gibt es mehrere Zeilen innerhalb der MM4-Gruppe mit dem maximalen Zählwert (8). Mit dem gleichen Ansatz wie zuvor erhalten wir beide Zeilen:

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

Aktualisierung:

Wenn das Ziel darin besteht, dem DataFrame eine neue Spalte hinzuzufügen, die den maximalen Zählwert innerhalb jeder Gruppe angibt, können wir die Transformationsmethode verwenden, um den Wert für jede Gruppe zu berechnen Zeile:

df.groupby(['Sp', 'Mt'])['count'].max()

Dies führt zu einem DataFrame, der die Spalte count_max enthält, die jeweils den maximalen Zählwert enthält Gruppe:

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

Das obige ist der detaillierte Inhalt vonWie finde ich Zeilen mit maximalen Zählwerten innerhalb von Gruppen in Pandas?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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