【Pandas思考记录】力扣181. 超过经理收入的员工

原题链接

Pandas 代码:

import pandas as pd

def find_employees(employee: pd.DataFrame) -> pd.DataFrame:
    merged_df = pd.merge(employee, employee, left_on='managerId', right_on='id', how='inner', suffixes=('', '_manager'))
    print("merged_df", merged_df)

    # 然后,筛选出工资高于经理的员工
    result = merged_df[merged_df['salary'] > merged_df['salary_manager']]

    # 最后,选择结果中的name列并将其重命名为Employee
    result = result[['name']].rename(columns={'name': 'Employee'})
    return result

函数组成部分详解:

  1. 数据合并

    • 使用pd.merge()方法将employee DataFrame与自身合并,以关联员工及其直接经理的信息。
    • left_on='managerId'right_on='id'指定合并依据:左侧DataFrame的managerId列与右侧DataFrame的id列。
    • suffixes=('', '_manager')为来自右侧DataFrame的列添加_manager后缀,以区分员工与其经理的相同字段。
  2. 筛选薪资高于经理的员工

    • 使用条件merged_df['salary'] > merged_df['salary_manager']筛选出薪资高于其经理的员工。
  3. 结果处理

    • 从筛选后的结果中选择name列,并通过rename(columns={'name': 'Employee'})重命名该列为Employee
    • 返回的DataFrame仅包含符合条件员工的姓名。

使用场景:

  • 此函数可用于人力资源管理分析,帮助企业理解薪酬分布情况。
  • 它能够有效地识别出薪资结构中的异常或独特案例,如员工薪资超过其直接上级。
  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值