Pandas查询步骤分析
查询步骤
-
初始化
bonus
列:- 在
employees
DataFrame中添加一个新列bonus
,初始值为0。
employees['bonus'] = 0
- 在
-
定义条件:
- 创建一个条件,用于识别那些符合特殊奖金条件的员工。
- 条件是:
employee_id
是奇数(employee_id % 2 == 1
)且员工名字不是以’M’开头(~(employees['name'].str[0] == 'M')
)。
condition = (employees['employee_id'] % 2 == 1) & (~(employees['name'].str[0] == 'M'))
-
应用条件并计算奖金:
- 使用
.loc
访问器,结合上述条件,更新符合条件的员工的bonus
列,将其设置为他们的salary
值。
employees.loc[condition, 'bonus'] = employees['salary']
- 使用
-
排序DataFrame:
- 将
employees
DataFrame按employee_id
列的值进行排序。
employees = employees.sort_values('employee_id')
- 将
-
返回结果:
- 最后,函数返回一个新的DataFrame,仅包含
employee_id
和bonus
列。
return employees[['employee_id', 'bonus']]
- 最后,函数返回一个新的DataFrame,仅包含
Pandas 代码实现
import pandas as pd
def calculate_special_bonus(employees: pd.DataFrame) -> pd.DataFrame:
employees['bonus'] = 0
condition = (employees['employee_id'] % 2 == 1) & (~(employees['name'].str[0] == 'M'))
employees.loc[condition, 'bonus'] = employees['salary']
employees = employees.sort_values('employee_id')
return employees[['employee_id', 'bonus']]
结果说明
- 这个函数返回一个包含所有员工的
employee_id
和他们对应的bonus
的DataFrame。 bonus
列的值是基于特定条件计算的:如果员工的ID为奇数且名字不以’M’开头,他们的奖金等于他们的工资;否则,奖金为0。- 返回的DataFrame将按照
employee_id
的顺序排列。