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!