# coding:utf-8
# author by: acrossyao
# Python 3.7.9
import pandas as pd
def rank_by_list_res(listname,ascending=False,method='min'):
'''
對列表中的數據排名
:param listname:list,列表名字
:param ascending:bool,降序排明,數字越大,排名越靠前
:param method:string,使用組內最小排名,默認min
:return:返回排名列表
'''
b = pd.Series(a)
rank = b.rank(ascending=ascending, method=method).tolist()
rs = map(int,rank)
return rs
#測試demo
if __name__ == '__main__':
a = [6, 1, 8, 90, 1, 23, 4]
#降序排名,取組內最小的排名
rs1 = rank_by_list_res(a)
print(list(rs1))
#降序排名,取組內最大的排名
rs2 = rank_by_list_res(a,False,'max')
print(list(rs2))
# 升序排名,取組內最小的排名
rs3 = rank_by_list_res(a, True)
print(list(rs3))
# 降序排名,取組內最大的排名
rs4 = rank_by_list_res(a, True, 'max')
print(list(rs4))
測試用例運行結果:

tips:最近在寫python對excel的數據處理中,匯總求和之后,需要對求和列排名,(在excel中使用rank()就可以)
然后就對python中的rank()函數做了簡單封裝
對python中rank()的理解參考:https://www.jb51.net/article/175251.htm