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

GoTa Series返回全为NaN但调试器显示值正常 如何解决?

问题修复方案

根因分析

  • 类型不匹配:Gota的series.Floats()构造函数仅支持float64类型输入,你代码中使用float32计算后直接传入,类型不匹配导致序列化异常,最终生成NaN值。
  • 取值逻辑错误:Rapply传入的series.Series是当前行的完整数据序列,哪怕仅Select单个字段,也不能直接调用s.String()获取字段值,该方法返回的是Series对象的格式化描述而非实际字段内容,会导致后续字符计数、长度计算全部错误,极端情况会出现空串触发除0逻辑,也会生成NaN。

修复代码

计算函数调整

func hardVowels(s series.Series) series.Series {
    // 取当前行第一个元素(对应Select的name字段)转字符串
    name := s.Elem(0).String()
    name = prepName(name)

    runeName := []rune(name)
    lengthName := float64(len(runeName))
    // 提前处理空姓名的除0问题
    if lengthName == 0 {
        return series.Floats(0.0)
    }

    hardVow1 := float64(strings.Count(name, "p"))
    hardVow2 := float64(strings.Count(name, "k"))
    hardVow3 := float64(strings.Count(name, "f"))

    hardVowScore := (hardVow1 + hardVow2 + hardVow3) / lengthName
    return series.Floats(hardVowScore)
}

调用逻辑无需修改

hardVowSeries := df.Select("name").Rapply(hardVowels)
hardVowSeries.SetNames("hard Vowel Score")

额外验证建议

如果调整后仍有异常,可以在函数内增加日志打印name变量的实际值,确认prepName函数的输出是否符合预期,避免预处理逻辑导致异常空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:36:03