D14—【178. 分数排名】

编写一个解决方案来查询分数的排名。排名按以下规则计算:

  • 分数应按从高到低排列。
  • 如果两个分数相等,那么两个分数的排名应该相同。
  • 在排名相同的分数后,排名数应该是下一个连续的整数。换句话说,排名之间不应该有空缺的数字。

按 score 降序返回结果表。

查询结果格式如下所示。
在这里插入图片描述

import pandas as pd

def order_scores(scores: pd.DataFrame) -> pd.DataFrame:
    scores['rank'] = scores['score'].rank( method='dense',ascending=False)
    scores.sort_values('score',ascending=False,inplace=True)
    scores['rank'] = scores['rank'].astype(int)
    return scores[['score','rank']]

在这里插入图片描述

注意

pd.rank()

Series.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)
DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)

在这里插入图片描述

method=‘dense’

在 Pandas 的 .rank() 方法中,method=‘dense’ 是一种处理相等值的排名方式。与其他排名方法相比,它会为相等的值分配相同的排名,但后续排名紧接前一排名,而不会跳跃。
特点

对于相等的值分配相同的排名。
后续排名是连续的,而不是跳跃式的。
import pandas as pd

# 创建 Series
scores['rank'] = scores['score'].rank( ascending=False)

在这里插入图片描述

scores['rank'] = scores['score'].rank(method='dense',ascending=False)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小菜鸟moon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值