Python实现数据集中时薪周薪月薪统一换算为年薪的方法
薪资单位统一换算为年度薪资的Pandas实现
需求说明
- 目标:将数据集中按时薪、周薪、月薪、年薪四种单位统计的薪资,统一换算为年度薪资
原代码问题提示
你提供的原始代码存在逻辑错误:annual_rate 函数内部错误调用了全局的 df["prevailing_wage"] 而非传入的单行数据 x["prevailing_wage"],执行时会返回全列数据而非对应行的计算结果,无法得到正确的换算值。
修正后的可运行代码
def annual_rate(x): if x["unit_of_wage"] == "Hour": # 时薪转年薪:默认每周工作40小时,全年52周 return x["prevailing_wage"] * 40 * 52 elif x["unit_of_wage"] == "Week": # 周薪转年薪:全年52周 return x["prevailing_wage"] * 52 elif x["unit_of_wage"] == "Month": # 月薪转年薪:全年12个月 return x["prevailing_wage"] * 12 else: # 年薪直接返回原值 return x["prevailing_wage"] df = df.assign(annual_salary_calc=df.apply(annual_rate, axis=1))
高性能优化写法(可选)
如果数据集规模较大,用向量化运算替代行遍历apply可以大幅提升运行效率:
import numpy as np conditions = [ df["unit_of_wage"] == "Hour", df["unit_of_wage"] == "Week", df["unit_of_wage"] == "Month" ] # 对应单位的薪资换算乘数 multipliers = [40*52, 52, 12] df["annual_salary_calc"] = df["prevailing_wage"] * np.select(conditions, multipliers, default=1)
内容的提问来源于stack exchange,提问作者Carl Honrado
相关产品推荐
相关产品推荐

