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
Linda HamiltonOriginal
2024-11-25 03:16:14629Durchsuche

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

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)

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

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)

Ergebnis:

    id  value
0   1      1
1   1      2
2   2      1
3   2      2
4   3      1
5   4      1

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)

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!

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