原题链接
Pandas 代码:
import pandas as pddef 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列并将其重命名为Employeeresult = result[['name']].rename(columns={'name': 'Employee'})return result
函数组成部分详解:
-
数据合并:
- 使用
pd.merge()
方法将employee
DataFrame与自身合并,以关联员工及其直接经理的信息。 left_on='managerId'
和right_on='id'
指定合并依据:左侧DataFrame的managerId
列与右侧DataFrame的id
列。suffixes=('', '_manager')
为来自右侧DataFrame的列添加_manager
后缀,以区分员工与其经理的相同字段。
- 使用
-
筛选薪资高于经理的员工:
- 使用条件
merged_df['salary'] > merged_df['salary_manager']
筛选出薪资高于其经理的员工。
- 使用条件
-
结果处理:
- 从筛选后的结果中选择
name
列,并通过rename(columns={'name': 'Employee'})
重命名该列为Employee
。 - 返回的DataFrame仅包含符合条件员工的姓名。
- 从筛选后的结果中选择
使用场景:
- 此函数可用于人力资源管理分析,帮助企业理解薪酬分布情况。
- 它能够有效地识别出薪资结构中的异常或独特案例,如员工薪资超过其直接上级。