可以使用 SQL 和 Pandas 两种方式来解决这个问题。下面是对应的解决方案。
✅ SQL 解决方案:
SELECT
employee_id,
name,
CASE
WHEN employee_id % 2 = 1 AND name NOT LIKE 'M%' THEN salary
ELSE 0
END AS bonus
FROM Employees
ORDER BY employee_id;
✅ Pandas 解决方案:
import pandas as pd
# 假设你已经有一个 DataFrame,命名为 employees
# 示例 DataFrame:
# employees = pd.DataFrame({
# 'employee_id': [1, 2, 3, 4],
# 'name': ['Alice', 'Mike', 'Bob', 'Megan'],
# 'salary': [5000, 6000, 7000, 8000]
# })
employees['bonus'] = employees.apply(
lambda row: row['salary'] if row['employee_id'] % 2 == 1 and not row['name'].startswith('M') else 0,
axis=1
)
result = employees[['employee_id', 'name', 'bonus']].sort_values(by='employee_id')
你有具体的数据要我来跑一遍测试下吗?可以贴一下样本我帮你验证下结果~