Problem:
Alle Zeilen aus einem Pandas-DataFrame abrufen, die vorhanden sind der Maximalwert für die Spalte „count“, gruppiert nach „Sp“ und „Mt“ Spalten.
Beispiele:
Beispiel 1:
Eingabedatenrahmen:
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 |
Erwartet 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:
Eingabedatenrahmen:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM2 | S4 | dgd | 1 |
MM4 | S2 | rd | 2 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
Erwartete Ausgabe:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
Lösung:
import pandas as pd df.groupby(['Sp', 'Mt'])['count'].max()
Dies gibt eine Serie mit der maximalen Anzahl für jede eindeutige Kombination aus „Sp“ und „Mt“ zurück.
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
Dadurch wird eine boolesche Maske erstellt, wobei „True“ Zeilen mit angibt die maximale Anzahl innerhalb ihrer Gruppe.
df[idx]
Dadurch wird der DataFrame so gefiltert, dass nur Zeilen mit der IDX-Maske enthalten sind ist True, was zur gewünschten Ausgabe führt.
Hinweis: Es werden mehrere Zeilen mit gleicher Maximalanzahl zurückgegeben wenn sie in derselben Gruppe vorkommen.
Das obige ist der detaillierte Inhalt vonWie erhalte ich Zeilen mit der maximalen Anzahl in gruppierten Pandas-DataFrames?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!