首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

⏰⏰⏰Pandas题解 | 176. 第二高的薪水

176. 第二高的薪水

题目描述

题目示例

思路

获取第二高的工资:

先降序排序,再去重,找到第二高的工资数值,最后转换为题目中需要的格式;

方法

排序:df.sort_values(by="列名", ascending=False)对特定列数据进行降序排序

去重:df.drop_duplicates(subset="列名"),根据特定列数据进行行去重

获取特定行列的数据:df.loc[索引,"列名"],注意,这里使用索引表示行数时,需要将去重后的数据索引重置;

索引重置:df.reset_index(drop=True),drop=True表示不保存原始索引数据,False会将原始索引生成一个列保存在dataframe中;

转换格式:pd.DataFrame({'列名':[数值]})可以生成pandas数据。

详解代码

详细注释的pandas求解代码:

import pandas as pd

def second_highest_salary(employee: pd.DataFrame) -> pd.DataFrame:

# employee 按工资salary的数值进行排序,并按降序排列

employee = employee.sort_values(by="salary", ascending=False)

# 删除重复的工资数据

employee = employee.drop_duplicates(subset="salary")

# 重置数据的索引,增加drop=True参数,不保留原始的索引

employee = employee.reset_index(drop=True)

# 获取第2高的工资,本题的返回格式比较简单,可以先取值再转为pandas的DataFrame结构

if len(employee) >= 2:

# 如果存在第二高的工资,便通过.loc函数根据索引和列名获取第二高的工资值

SecondHighestSalary = employee.loc[1,"salary"]

return pd.DataFrame({'SecondHighestSalary':[SecondHighestSalary]})

else:

# 如果不存在,便返回Null

return pd.DataFrame({'SecondHighestSalary':[None]})

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Otz9BUquNQqLz9KZFWPUt3NA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券