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})"})

posted @ 2024-03-21 13:01  KevinScott0582  阅读(14)  评论(0编辑  收藏  举报