python pandas實現partition by組內排序功能

不需要排名列直接得出每門科目前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)

 

如果對你有幫助,請點下贊,予人玫瑰手有餘香!

時時仰望天空,理想就會離現實越來越近!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章