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

解决D3.js处理CSV千分位数值时出现NaN的问题

解决D3 CSV数值转换NaN的问题

嘿,我知道你为啥会得到NaN啦!问题出在你数据里的千分位逗号——JavaScript没法直接把带逗号的字符串(比如"1,688")转换成数字,所以+d[columns[i]]才会返回NaN。

修复方案:先移除逗号再转数字

你只需要在转换前把字符串里的逗号全部替换掉,再用+转换为数字就行。修改后的代码如下:

d3.csv("stores.csv", function(d, i, columns) {
  let total = 0;
  // 遍历除Year外的所有列
  for (let i = 1; i < columns.length; i++) {
    // 移除字符串中的所有逗号,再转换为数字
    const parsedNum = +d[columns[i]].replace(/,/g, '');
    d[columns[i]] = parsedNum;
    total += parsedNum;
  }
  d.total = total;
  return d;
}, function(error, data) {
  if (error) throw error;
  // 这里可以添加你的D3图表逻辑
  console.log(data); // 先打印验证转换后的数据是否正确
});

额外说明

  • 确保你的CSV文件里的数值确实用双引号包裹(你的数据格式是对的),这样D3才能正确读取完整的字符串。
  • 如果还是有问题,可以在转换前先打印d[columns[i]],确认D3是否正确读取了原始字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:26:23