python – Pandas排名方法密集但跳过一个数字

python – Pandas排名方法密集但跳过一个数字,第1张

概述我有一个示例数据集,我正在尝试根据“HP”列中的值进行排名: import pandas as pdd = { 'unit': ['UD', 'UD', 'UD' ,'UC','UC', 'UC','UA','UA','UA','UB','UB','UB'], 'N-D': [ 'C1', 'C2', 'C3','Q1', 'Q2', 'Q3','D1','D2','D3','E1','E 我有一个示例数据集,我正在尝试根据“HP”列中的值进行排名:

import pandas as pdd = { 'unit': ['UD','UD','UC','UA','UB','UB'],'N-D': [ 'C1','C2','C3','Q1','Q2','Q3','D1','D2','D3','E1','E2','E3'],'HP': [24,24,7,5,5]}df = pd.DataFrame(d)df['rank']=df['HP'].rank(ascending=False,method='dense')df

看起来像:

HP N-D unit  rank0   24  C1   UD   1.01   24  C2   UD   1.02   24  C3   UD   1.03    7  Q1   UC   2.04    7  Q2   UC   2.05    7  Q3   UC   2.06    7  D1   UA   2.07    7  D2   UA   2.08    7  D3   UA   2.09    5  E1   UB   3.010   5  E2   UB   3.011   5  E3   UB   3.0

‘HP’是基于其他列的计算列(我不会在这里显示,但它在我的真实数据集中是必要的)

我也尝试了方法=’min’但结果如下:

HP N-D unit  rank0   24  C1   UD   1.01   24  C2   UD   1.02   24  C3   UD   1.03    7  Q1   UC   4.04    7  Q2   UC   4.05    7  Q3   UC   4.06    7  D1   UA   4.07    7  D2   UA   4.08    7  D3   UA   4.09    5  E1   UB  10.010   5  E2   UB  10.011   5  E3   UB  10.0

单位’UC’和’UA’并列第二等级,我正在寻找的是下一个等级,单位’UB’为’4’而不是’3′. :

HP N-D unit  rank0   24  C1   UD   1.01   24  C2   UD   1.02   24  C3   UD   1.03    7  Q1   UC   2.04    7  Q2   UC   2.05    7  Q3   UC   2.06    7  D1   UA   2.07    7  D2   UA   2.08    7  D3   UA   2.09    5  E1   UB   4.010   5  E2   UB   4.011   5  E3   UB   4.0
解决方法 一种选择是首先删除重复项来计算排名:

temp = df[['HP','unit']].drop_duplicates()temp.assign(rank=temp['HP'].rank(method='min',ascending=False)).merge(df)Out[48]:     HP unit  rank N-D0   24   UD   1.0  C11   24   UD   1.0  C22   24   UD   1.0  C33    7   UC   2.0  Q14    7   UC   2.0  Q25    7   UC   2.0  Q36    7   UA   2.0  D17    7   UA   2.0  D28    7   UA   2.0  D39    5   UB   4.0  E110   5   UB   4.0  E211   5   UB   4.0  E3

添加(antonvbr)稍加修改直接分配:

df['rank']= (df[['HP','unit']].drop_duplicates()['HP']            .rank(method='min',ascending=False)            .reindex(range(len(df)),method='pad'))
总结

以上是内存溢出为你收集整理的python – Pandas排名方法密集但跳过一个数字全部内容,希望文章能够帮你解决python – Pandas排名方法密集但跳过一个数字所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存