当前位置: 首页 > news >正文

力扣:178. 分数排名(Python3)

题目:

表: Scores

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| score       | decimal |
+-------------+---------+
在 SQL 中,id 是该表的主键。
该表的每一行都包含了一场比赛的分数。Score 是一个有两位小数点的浮点值。

查询并对分数进行排序。排名按以下规则计算:

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

按 score 降序返回结果表。

查询结果格式如下所示。

来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

输入:

Scores 表:
+----+-------+
| id | score |
+----+-------+
| 1  | 3.50  |
| 2  | 3.65  |
| 3  | 4.00  |
| 4  | 3.85  |
| 5  | 4.00  |
| 6  | 3.65  |
+----+-------+


输出:

+-------+------+
| score | rank |
+-------+------+
| 4.00  | 1    |
| 4.00  | 1    |
| 3.85  | 2    |
| 3.65  | 3    |
| 3.65  | 3    |
| 3.50  | 4    |
+-------+------+

解法:

先对score列降序排序,接着删除id列,然后使用rank函数排名。

知识点:

1.DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False):计算出axis方向上各个data的排名。axis:默认按沿着index方向排名;method有以下选择:

‘average’:默认,在每个组中分配平均排名(组,相同的值就是一个组,下同);

‘min’:对整个组使用最小排名;

‘max’:对整个组使用最大排名;

‘first’:按照值在数据中出现的次序分配排名;

‘dense’:类似于‘min’,但是组间排名总是增加1,而不是一个组中的相等元素的数量;

numeric_only:是否只对数值列处理;na_option:用于处理NaN值,'keep':保持NA;'top':升序时给NaN分配最小值;'bottom':升序时给NaN分配最大值;ascending:是否为升序,默认为True;pct:是否为百分数。举例,初始表如下,存在r:

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

代码:

import pandas as pddef order_scores(scores: pd.DataFrame) -> pd.DataFrame:r = scores.sort_values(['score'], ascending=False, ignore_index=True)del r['id']r['rank'] = r.rank(method='dense', ascending=False)return r

http://www.lryc.cn/news/241278.html

相关文章:

  • raid磁盘阵列
  • SpringBoot学习笔记-实现微服务:匹配系统(上)
  • 重磅!全球首个“绿色黑灯工厂”落户中国,竟然是这家企业……
  • go语言学习-异常处理
  • 如何使用 JavaScript 实现图片上传并转换为 LaTeX 公式
  • 深刻理解MySQL8游标处理中not found
  • 甄知燕千云与SAP、EBS、TC、NS等应用深度集成,智能提单一键畅通,效能一键提升
  • 第99步 深度学习图像目标检测:SSDlite建模
  • 用EasyAVFilter将网络文件或者本地文件推送RTMP出去的时候发现CPU占用好高,用的也是vcodec copy呀,什么原因?
  • Vatee万腾科技的独特力量:Vatee数字时代创新的新视野
  • 【JavaSE】基础笔记 - 异常(Exception)
  • QTableWidget——编辑单元格
  • 编译QT Mysql库并集成使用
  • 利用企业被执行人信息查询API保障商业交易安全
  • 【深度学习】P1 深度学习基础框架 - 张量 Tensor
  • vue2 识别页面参数中的html
  • matlab 一些画图法总结(持续更新)
  • MDK AC5和AC6是什么?在KEIL5中添加和选择ARMCC版本
  • 杰发科技AC7801——EEP内存分布情况
  • 【mybatis注解实现条件查询】
  • 【广州华锐互动】VR线上课件制作软件满足数字化教学需求
  • MySQL 中 DELETE 语句中可以使用别名么?
  • flutter创建不同样式的按钮,背景色,边框,圆角,圆形,大小都可以设置
  • 【C++】标准模板库STL作业(其二)
  • 基于SpringBoot+Redis实现点赞/排行榜功能,可同理实现收藏/关注功能,可拓展实现共同好友/共同关注/关注推送功能
  • AI“胡说八道”?怎么解?
  • [SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering
  • 大话设计模式C++实现
  • IT 领域中的主要自动化趋势
  • 使用Python解析CAN总线