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!