表: Scores
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | score | decimal | +-------------+---------+ id 是该表的主键(有不同值的列)。 该表的每一行都包含了一场比赛的分数。Score 是一个有两位小数点的浮点值。
编写一个解决方案来查询分数的排名。排名按以下规则计算:
按 score 降序返回结果表。
查询结果格式如下所示。
示例 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 | +-------+------+
解答:
- import pandas as pd
-
- # 示例数据
- data = {
- 'id':[1, 2, 3, 4, 5, 6],
- 'score':[3.50, 3.65, 4.00, 3.85 , 4.00, 3.65]
- }
-
- # 创建DataFrame
- df = pd.DataFrame(data)
-
- # 按score降序排序
- df = df.sort_values(by = 'score', ascending = False)
-
- # 排序排名
- df['rank'] = df['score'].rank(method = 'dense', ascending = False).astype(int)
-
- # 选择所需的列并按要求返回结果
- result = df[['score', 'rank']]
-
- # 打印结果
- print(result)
题源:Leetcode
这里用到了排序和选择所需列输出的知识。
2024.5.30