Name Amount
---------------
Alice 100
Bob 50
Charlie 200
Alice 30
Charlie 10
Bob 300
Charlie 55
Charlie 12
鉴于以上数据框我想按金额排序(这里不需要帮助) 然后为每个人选择前5个金额:Alice,Charlie等花费的前五个金额,并将其放入新的数据框中。 所有剩余的较小支出都将被忽略。
答案 0 :(得分:2)
IIUC您可以使用nlargest()
方法:
In [12]: top2 = df.groupby('Name').Amount.nlargest(2).reset_index().drop('level_1',1)
In [13]: top2
Out[13]:
Name Amount
0 Alice 100
1 Alice 30
2 Bob 300
3 Bob 50
4 Charlie 200
5 Charlie 55