python partition by组内排序并取前n

import pandas as pd
import numpy as np
dic={'科目':['语文','语文','语文','语文','数学','数学','数学','数学','英语','英语','英语','英语'],
         '姓名':['赵大','钱二','孙三','李四','周五','郑六','王七','朱八','小红','小明','小李','小王'],
         '分数':[95,84,93,88,91,93,84,85,94,93,83,87]}
data=pd.DataFrame(dic)#转为DataFrame
data['rank'] = data.groupby('科目')['分数'].rank(ascending = False)
print(data)
print("*"*60)
data_select=data[data['rank']<=2]
print(data_select)
 科目  姓名  分数  rank
0   语文  赵大  95   1.0
1   语文  钱二  84   4.0
2   语文  孙三  93   2.0
3   语文  李四  88   3.0
4   数学  周五  91   2.0
5   数学  郑六  93   1.0
6   数学  王七  84   4.0
7   数学  朱八  85   3.0
8   英语  小红  94   1.0
9   英语  小明  93   2.0
10  英语  小李  83   4.0
11  英语  小王  87   3.0
************************************************************
   科目  姓名  分数  rank
0  语文  赵大  95   1.0
2  语文  孙三  93   2.0
4  数学  周五  91   2.0
5  数学  郑六  93   1.0
8  英语  小红  94   1.0
9  英语  小明  93   2.0

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/qq_27866857/article/details/113438215