Heim >Backend-Entwicklung >Python-Tutorial >Wie erhalte ich Zeilen mit der maximalen Anzahl in gruppierten Pandas-DataFrames?

Wie erhalte ich Zeilen mit der maximalen Anzahl in gruppierten Pandas-DataFrames?

DDD
DDDOriginal
2024-12-20 07:14:12768Durchsuche

How to Get Rows with the Maximum Count in Grouped Pandas DataFrames?

Zeilen mit maximaler Anzahl in gruppierten Pandas-DataFrames abrufen

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:

  1. Ermitteln Sie die maximale Anzahl pro Gruppe:
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.

  1. Erstellen Sie eine boolesche Maske:
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.

  1. Filtern Sie den DataFrame:
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!

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