Heim >Backend-Entwicklung >Python-Tutorial >Wie finde ich Zeilen mit der maximalen Anzahl in Pandas GroupBy-Operationen?

Wie finde ich Zeilen mit der maximalen Anzahl in Pandas GroupBy-Operationen?

Susan Sarandon
Susan SarandonOriginal
2024-12-29 19:16:16144Durchsuche

How to Find Rows with the Maximum Count in Pandas GroupBy Operations?

Zeilen mit maximaler Anzahl in Pandas-Gruppen abrufen

Problem:

So identifizieren Sie Zeilen mit dem höchsten Wert für die Spalte „Anzahl“ in einem Pandas-DataFrame bei der Gruppierung nach mehreren Spalten?

Lösung:

Schritt 1: Maximale Anzahl für jede Gruppe ermitteln

Um die maximale Anzahl für jede Gruppe zu bestimmen Gruppe verwenden Sie die Funktionen groupby() und max():

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

Dadurch wird eine Serie erstellt, die jeweils die maximale Anzahl enthält Gruppe.

Schritt 2: Zeilen mit maximaler Anzahl identifizieren

Um die Indizes der Zeilen mit maximaler Anzahl im ursprünglichen DataFrame zu erhalten, verwenden Sie die transform()-Methode:

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

Dadurch wird eine boolesche Reihe erstellt, wobei „True“ Zeilen mit Maximum angibt count.

Schritt 3: Zeilen basierend auf der maximalen Anzahl filtern

Zuletzt filtern Sie den DataFrame mithilfe der booleschen Indizierung, um nur die Zeilen mit der maximalen Anzahl auszuwählen:

result = df[idx]

Dadurch wird ein neuer DataFrame zurückgegeben, der jeweils nur die Zeilen mit dem höchsten Wert für die Spalte „Anzahl“ enthält Gruppe.

Beispiele:

Beispiel 1:

df = pd.DataFrame({
    'Sp': ['MM1', 'MM1', 'MM1', 'MM2', 'MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S1', 'S1', 'S3', 'S3', 'S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['a', 'n', 'cb', 'mk', 'bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [3, 2, 5, 8, 10, 1, 2, 2, 7]
})

Ausgabe:

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

Beispiel 2:

df = pd.DataFrame({
    'Sp': ['MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [10, 1, 2, 8, 8]
})

Ausgabe:

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

Hinweis: Wenn mehrere Zeilen innerhalb einer Gruppe die maximale Anzahl haben, Alle diese Zeilen werden zurückgegeben.

Das obige ist der detaillierte Inhalt vonWie finde ich Zeilen mit der maximalen Anzahl in Pandas GroupBy-Operationen?. 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