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!