pandas笔记(四)-- 第N高的薪水(去重、排序、含空值的数据表)
题目描述
查询employee
表中第N高的工资,如果没有第n
高的工资则返回null
如下所示:
测试用例
输入
id | salary |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
n=2
输出
getNthHighestSalary(2) |
---|
200 |
输入
id | salary |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
n=4
输出
getNthHighestSalary(2) |
---|
null |
解析
思路
讲述看到这一题的思路
解题方法
首先需要除去
employee
表中工资相同的行,再按照去重后的数据表进行查找,即
employee = employee.drop_duplicates(subset=["salary"])
,随后判断
n值的范围是否超出数据表的索引范围,即if n > len(employee) or n <= 0
若超出则返回列索引为f"getNthHighestSalary({n})"
的空表,若未超出则
进行排序、查找与返回操作,注意为返回的数据表进行重命名
代码
import pandas as pd
def nth_highest_salary(employee: pd.DataFrame, n: int) -> pd.DataFrame:
employee = employee.drop_duplicates(subset=["salary"])
if n > len(employee) or n <= 0:
return pd.DataFrame({f"getNthHighestSalary({n})": [None]})
df = employee.sort_values(by="salary", ascending=False)
return df[["salary"]].iloc[[n-1]].rename(columns={"salary": f"getNthHighestSalary({n})"})
合集:
pandas随笔
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具