You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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就会得到预期结果:

namesalaryround_salary
Tom1020010000
Kate''''
Mi3231130000

内容的提问来源于stack exchange,提问作者Terence Zhong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:52:59