data-forge-js处理含缺失值CSV时parseFloats返回空DataFrame如何解决
问题原因
你遇到的问题是parseFloats默认采用严格转换规则,遇到空字符串这类无法解析为浮点数的内容时,会直接转换失败返回空DataFrame,和你推测的缺失值导致的问题完全一致。
解决方法
方法1:开启强制转换,空值自动填充NaN
直接给parseFloats方法传入第二个配置参数,开启强制转换规则,无法解析的内容会自动转为NaN,不需要额外手动处理:
const stringDF = dataForge.fromCSV(csvData); const parsedDF = stringDF.parseFloats(stringDF.getColumnNames(), { coerce: true });
方法2:自定义占位值
如果你不想用NaN作为占位值,需要指定其他默认值(比如0、-1等),可以手动遍历每一列做转换:
const stringDF = dataForge.fromCSV(csvData); const parsedDF = stringDF .getColumns() .reduce((acc, column) => { // 空字符串替换为自定义占位值,其他内容正常转浮点数 const parsedCol = column .select(val => val.trim() === '' ? 0 : parseFloat(val)) // 这里的0可以替换为你需要的任意占位值 .rename(column.name); return acc.withSeries(column.name, parsedCol); }, new dataForge.DataFrame());
验证结果
处理完成后可以调用parsedDF.toString()打印整个DataFrame,确认缺失值位置已经填充为你设置的占位值。
内容的提问来源于stack exchange,提问作者Verwirrt
相关产品推荐
相关产品推荐

