[英]How to keep top 3 rows of each group in a pandas data frame?
我有一個如下所示的列表:
var1 var2 count
A abc 4
A abc 3
A abc 2
A abc 1
A abc 1
B abc 7
B abc 5
B abc 2
B abc 1
B abc 1
C abc 4
C abc 3
C abc 2
C abc 1
C abc 1
....
我想創建一個新的數據框,其中包含每組的前3個“計數”結果。 它應該如下所示:
var1 var2 count
A abc 4
A abc 3
A abc 2
B abc 7
B abc 5
B abc 2
C abc 4
C abc 3
C abc 2
....
有沒有一種方便的方法在使用head()在Python中執行此操作?
使用set_index
, groupby
和SeriesGroupBy.nlargest
解決方案:
df = df.set_index('var2').groupby("var1")['count'].nlargest(3).reset_index()
print (df)
var1 var2 count
0 A abc 4
1 A abc 3
2 A abc 2
3 B abc 7
4 B abc 5
5 B abc 2
6 C abc 4
7 C abc 3
8 C abc 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.