Pandas中用apply创建薪资万位取整列遇KeyError的解决求助
修复DataFrame生成round_salary列的KeyError问题
先帮你拆解下报错的核心原因:
- 列名写错了:你的代码里用了
x['income'],但你的DataFrame列明明是salary,这直接导致找不到对应列抛出KeyError; - 函数判断逻辑有问题:
if '' in salary这个写法在salary是整数时会报错,因为没法在数值类型里查找字符串匹配,应该直接判断是否等于空字符串。
下面给你两种可行的修复方案,都能满足你的需求:
方案1:用apply配合自定义函数
先写一个逻辑正确的处理函数,再应用到salary列上:
def round_salary(salary_val): # 先判断是否为空字符串,是则直接返回空 if salary_val == '': return '' # 把数值转成float后,四舍五入到万位(decimals=-4代表小数点前第4位) return round(float(salary_val), -4) # 假设你的DataFrame叫df,生成新列 df['round_salary'] = df['salary'].apply(round_salary)
方案2:用map配合lambda表达式(更简洁)
如果不想单独写函数,用lambda直接处理更高效:
df['round_salary'] = df['salary'].map(lambda s: '' if s == '' else round(float(s), -4))
执行完上面任意一种方案后,你的DataFrame就会得到预期结果:
| name | salary | round_salary |
|---|---|---|
| Tom | 10200 | 10000 |
| Kate | '' | '' |
| Mi | 32311 | 30000 |
内容的提问来源于stack exchange,提问作者Terence Zhong
相关产品推荐
相关产品推荐

