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

使用krangl读取大型CSV文件报错,小型文件正常问题求助

问题描述

刚接触Kotlin和IntelliJ Idea,此前代码运行完全正常:

import krangl.*

val dataPath = "C:\\Users\\fsald\\Dropbox\\Temp\\AAPL.CSV"
val dataPath1 = "C:\\Users\\fsald\\Dropbox\\Code\\Julia\\IOFiles\\Input\\AllData.CSV"

fun main(args: Array<String>) {
    krangl.irisData.print()

    val data = krangl.DataFrame.readCSV(dataPath)
    data.print()
}

上述代码中的两个DataFrame(irisData和data)均能正常打印输出。

但在main函数末尾添加读取大型CSV文件(约600列、25000行)的代码后,程序崩溃:

val data1 = krangl.DataFrame.readCSV(dataPath1)

报错信息如下:

Exception in thread "main" java.lang.NumberFormatException: invalid boolean cell value
    at krangl.TableIOKt.cellValueAsBoolean(TableIO.kt:336)
    at krangl.TableIOKt.dataColFactory(TableIO.kt:372)
    at krangl.TableIOKt.dataColFactory(TableIO.kt:376)
    at krangl.TableIOKt.readDelim(TableIO.kt:175)
    at krangl.TableIOKt.readDelim$default(TableIO.kt:133)
    at krangl.TableIOKt.readDelim(TableIO.kt:129)
    at krangl.TableIOKt.readCSV(TableIO.kt:43)
    at krangl.TableIOKt.readCSV$default(TableIO.kt:39)
    at MainKt.main(Main.kt:12)

Process finished with exit code 1
问题原因

这个报错的核心原因是krangl的自动类型推断机制在处理大型CSV时出现了误判或转换失败:

  • krangl读取CSV时会自动扫描列数据推断类型,当它判定某列可能是布尔类型时,会尝试将列中所有值转换为标准布尔值(仅识别小写的true/false)
  • 你的大型CSV中,某一列存在以下情况之一:
    • 列中存在非标准布尔格式的值(比如True/FALSE大小写不对、1/0这类数值、空值或其他异常字符串)
    • 该列原本不是布尔列,但krangl根据前几行数据误判为布尔类型,后续出现非布尔值时转换失败
  • 大型CSV列数多、数据量大,类型推断的误判概率更高,进而触发NumberFormatException异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:01:31