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

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

Linda Hamilton
Freigeben: 2024-11-25 03:16:14
Original
628 Leute haben es durchsucht

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

Oberste n Datensätze innerhalb jeder Gruppe in DataFrame abrufen

Um die obersten n Datensätze für jede Gruppe in einem DataFrame zu erhalten, sollten Sie die Verwendung von Pandas in Betracht ziehen. effiziente Methoden. Angenommen, wir haben den folgenden DataFrame mit den Spalten „id“ und „value“:

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

Mit den Funktionen „groupby()“ und „head()“ können wir die beiden obersten Datensätze für jede „id“ abrufen:

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

Ausgabe:

       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 reduzieren und doppelte Zeilenindizes zu entfernen, wenden Sie an reset_index():

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

Ergebnis:

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

Alternativ, wenn die Datensätze vor der Auswahl der obersten n für jede Gruppe sortiert werden müssen, wenden Sie zuerst die Sortierung an:

df_sorted = df.sort_values('value', ascending=False)
df_top2 = df_sorted.groupby('id').head(2)
Nach dem Login kopieren

Dies bietet einen effizienteren und eleganteren Ansatz, um die Top-Datensätze innerhalb jeder Gruppe in einem DataFrame zu erhalten.

Das obige ist der detaillierte Inhalt vonWie erhält man effizient die Top-N-Datensätze innerhalb jeder Gruppe eines Pandas-DataFrames?. 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