# 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