Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich die Top-N-Datensätze innerhalb von Gruppen in einem Pandas-DataFrame effizient abrufen?

Wie kann ich die Top-N-Datensätze innerhalb von Gruppen in einem Pandas-DataFrame effizient abrufen?

Barbara Streisand
Freigeben: 2024-12-05 13:24:12
Original
1055 Leute haben es durchsucht

How Can I Efficiently Retrieve the Top N Records Within Groups in a Pandas DataFrame?

Pandas: Top-Datensätze innerhalb von Gruppen effizient abrufen

Stellen Sie sich die Aufgabe vor, die beiden obersten Datensätze innerhalb jedes einzelnen Werts einer bestimmten Spalte in einem Pandas-DataFrame abzurufen. Betrachten Sie als Beispiel den folgenden DataFrame:

df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4], 'value':[1,2,3,1,2,3,4,1,1]})
Nach dem Login kopieren

Traditionell können Sie dieses Problem lösen, indem Sie Datensätze innerhalb jeder Gruppe nummerieren, nachdem Sie sie nach der gewünschten Spalte gruppiert haben:

dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
Nach dem Login kopieren

Allerdings a Ein effizienterer und eleganterer Ansatz besteht darin, die Kopffunktion von Pandas zu nutzen:

df.groupby('id').head(2)
Nach dem Login kopieren

Dadurch werden die beiden obersten Datensätze für jede Gruppe direkt zurückgegeben, ohne dass eine zusätzliche Spalte erforderlich ist Nummerierung.

       id  value
id             
1  0   1      1
   1   1      2 
2  3   2      1
   4   2      2
3  7   3      1
4  8   4      1
Nach dem Login kopieren

So entfernen Sie den MultiIndex und reduzieren die Ergebnisse:

df.groupby('id').head(2).reset_index(drop=True)
Nach dem Login kopieren
    id  value
0   1      1
1   1      2
2   2      1
3   2      2
4   3      1
5   4      1
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich die Top-N-Datensätze innerhalb von Gruppen in einem Pandas-DataFrame effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage