- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
一,原题力扣链接
二,题干
表:
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 = [[1, 3.5], [2, 3.65], [3, 4.0], [4, 3.85], [5, 4.0], [6, 3.65]]
scores = pd.DataFrame(data, columns=['id', 'score']).astype({'id':'Int64', 'score':'Float64'})
scores
四,分析
第一步:新增一列 实现类似sql中的 dense_rank效果
scores['rank'] = scores['score'].rank(method='dense',ascending=False)
第二步,倒序排序,并且映射相对应的列 输出
五,Pandas解答
import pandas as pd
def order_scores(scores: pd.DataFrame) -> pd.DataFrame:
scores['rank'] = scores['score'].rank(method='dense',ascending=False)
scores = scores.sort_values('score',ascending=False)
scores =scores[['score','rank']]
return scores
order_scores(scores)
六,验证
七,知识点总结
- Pandas中实现类似SQL中的dense_rank的效果 API:rank(mehtod='dense')
- Pandas中实现排序的运用 API: sort_values
- Pnadas的综合对排序问题的综合练习
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用