Gruppe durch und finden Sie top-n-value_counts pandas
Habe ich ein dataframe von taxi-Daten mit zwei Spalten, die wie folgt aussieht:
Neighborhood Borough Time
Midtown Manhattan X
Melrose Bronx Y
Grant City Staten Island Z
Midtown Manhattan A
Lincoln Square Manhattan B
Grundsätzlich, jede Zeile steht für eine taxi-Abholung in diesem Viertel in diesem Bezirk. Nun, ich will zu finden die top 5 Stadtteilen in jedem Stadtteil mit der höchsten Anzahl von pickups. Ich versuchte dies:
df['Neighborhood'].groupby(df['Borough']).value_counts()
Gibt mir so etwas wie dieses:
borough
Bronx High Bridge 3424
Mott Haven 2515
Concourse Village 1443
Port Morris 1153
Melrose 492
North Riverdale 463
Eastchester 434
Concourse 395
Fordham 252
Wakefield 214
Kingsbridge 212
Mount Hope 200
Parkchester 191
......
Staten Island Castleton Corners 4
Dongan Hills 4
Eltingville 4
Graniteville 4
Great Kills 4
Castleton 3
Woodrow 1
Wie Filtere ich es so, dass ich nur die top 5 aus jeder? Ich weiß, es gibt ein paar Fragen, die mit einem ähnlichen Titel, aber Sie waren nicht hilfreich in meinem Fall.
- wenn Sie gerade auf der Suche für den Modus (eindeutig oder nicht), siehe die Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Sie verwenden können,
nlargest
- Sie können1
zu5
:zusätzliche Spalten wurden erschaffen, angegebenen Stufe-info
print s.groupby(level=0).nlargest(1).reset_index(level=0, drop=True)
Können Sie diese in einer einzigen Zeile, indem Sie Sie leicht erweitern Sie Ihre original-groupby mit 'nlargest':