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
Patricia ArquetteOriginal
2024-12-02 19:27:14971Durchsuche

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]})

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()

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

df.groupby('id').head(2)

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

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

df.groupby('id').head(2).reset_index(drop=True)

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

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!

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