不需要排名列直接得出每門科目前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)
如果對你有幫助,請點下贊,予人玫瑰手有餘香!
時時仰望天空,理想就會離現實越來越近!