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