使用“应用”函数创建一个新列,该列的值为整数

2024-04-26 04:08:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据帧如下所示:

name  |  salary 
Tom   |   10200 
Kate  |          
Mi    |   32311 

kate的值是“”,关于薪水和舍入工资,我将其值替换为“”,因此它在单元格中不显示任何内容

问题:

我想创建一个新的薪资列,将薪资四舍五入到最接近的10000

结果如下所示

name  |  salary | round_salary
Tom   |   10200 |  10000
Kate  |         |  
Mi    |   32311 |  30000

我的代码如下所示:

def round_income(salary):
    if '' in salary:
        return ''
    else: 
        return salary.round(decimals = -4)

income.apply(lambda x: round_salary(x['income']), axis=1)

输出错误为:

KeyError: ('salary', 'occurred at index 0')

有人知道怎么修吗?我发现map或apply函数可以解决它,提前谢谢大家的帮助~


Tags: 数据代码name内容return薪资薪水apply
1条回答
网友
1楼 · 发布于 2024-04-26 04:08:43

如果没有缺失值,但非数值的值为空,则解决方案:

income['salary'] = (pd.to_numeric(income['salary'], errors='coerce')
                      .round(decimals = -4)
                      .fillna(''))
print (income)
   name salary
0   Tom  10000
1  Kate       
2    Mi  20000

缺少值的解决方案-列salary中的所有数据都是数字:

income['salary'] = income['salary'].round(decimals = -4).astype('Int64')
print (income)
   name  salary
0   Tom   10000
1  Kate     NaN
2    Mi   20000

相关问题 更多 >