Heim > Backend-Entwicklung > Python-Tutorial > Wie erhält man effizient die Top-N-Datensätze innerhalb jeder Pandas-Gruppe?

Wie erhält man effizient die Top-N-Datensätze innerhalb jeder Pandas-Gruppe?

Patricia Arquette
Freigeben: 2024-12-02 19:27:14
Original
1009 Leute haben es durchsucht

How to Efficiently Get the Top N Records within Each Pandas Group?

Erhalten der höchsten Datensätze innerhalb einer Pandas-Gruppe

Im folgenden Datensatz:

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

wir möchten die erhalten Die beiden obersten Datensätze für jede ID. Ein unkomplizierter Ansatz besteht darin, Zeilennummern innerhalb jeder Gruppe mithilfe der Groupby-Methode zuzuweisen:

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

Eine effizientere Lösung bietet jedoch die Head-Funktion:

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

Dieser Vorgang erzeugt:

       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

Um den MultiIndex zu entfernen und die Ergebnisse zu reduzieren, verwenden Sie:

df.groupby('id').head(2).reset_index(drop=True)
Nach dem Login kopieren

Dies führt zum gewünschten Ergebnis Ausgabe:

    id  value
0   1      1
1   1      2
2   2      1
3   2      2
4   3      1
5   4      1
Nach dem Login kopieren

Somit bietet die Head-Funktion einen präzisen und optimierten Ansatz zum Abrufen der obersten Datensätze innerhalb jeder Pandas-Gruppe.

Das obige ist der detaillierte Inhalt vonWie erhält man effizient die Top-N-Datensätze innerhalb jeder Pandas-Gruppe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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