不需要排名列直接得出每门科目前2名数据:
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=data.sort_values('分数', ascending = False)
data_select = data.groupby('科目').head(2).sort_values('科目')
需要排名列:
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)
data_select=data[data['rank']<=2]
如果对你有帮助,请点下赞,予人玫瑰手有余香!
时时仰望天空,理想就会离现实越来越近!