You need to enable JavaScript to run this app. Jupyter中将带M/K后缀的字符串转数字报UnboundLocalError如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter中将带M/K后缀的字符串转数字报UnboundLocalError如何解决

错误原因

  • 函数中判断'M'是否存在时,误用了未定义的局部变量out,应该以入参value作为判断依据
  • 处理M后缀的分支中,替换字符的操作也错用了未赋值的out
  • 原逻辑没有覆盖非字符串类型入参、字符串无M/K后缀的边界场景,会导致out未定义就返回

修复后代码

def value_and_wage_conversion(value):
    # 入参不是字符串时直接转换为浮点型返回
    if not isinstance(value, str):
        return float(value)
    # 根据后缀做单位转换
    if 'M' in value:
        out = float(value.replace('M', '')) * 1000000
    elif 'K' in value:
        out = float(value.replace('K', '')) * 1000
    # 无后缀时直接转浮点型
    else:
        out = float(value)
    return out

# apply可直接传入函数名,无需额外封装lambda
fifa_18['Value'] = fifa_18['Value'].apply(value_and_wage_conversion)
fifa_18['Wage'] = fifa_18['Wage'].apply(value_and_wage_conversion)

补充说明

原报错的核心触发点是代码执行到if 'M' in out时,out还没有被赋值,Python找不到对应变量就抛出了UnboundLocalError。修复后的逻辑覆盖了所有可能的入参场景,不会再出现变量未定义的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:36:10