首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么CSV文件中的数据被输出为NaN?

为什么CSV文件中的数据被输出为NaN?
EN

Stack Overflow用户
提问于 2017-03-12 01:27:53
回答 1查看 1.3K关注 0票数 3

我刚刚在Lynda.com上完成了一段视频,却无法获得与老师使用D3相同的结果。我已经创建了一个简单的文件版本,但它仍然无法工作。当我试图检索日期时,控制台将输出NaN。

CSV作为Excel的输出,是:

代码语言:javascript
复制
Date,AM
1995-04-16,3.5
1995-04-17,14.0
1995-04-18,10.8

Javascript文件包含:

代码语言:javascript
复制
d3.csv("bg_test_date_parsing.csv", function(d) {
  return {    Date: +d.Date,  AM: +d["AM"]  };
}, function(data) {
    console.log(data[1]);
});

Mozilla中的控制台给我的是:

代码语言:javascript
复制
Object { Date: NaN, AM: 14 }

我不能继续任何项目,因为我不知道从哪里开始正确导入日期。lynda.com上的视频还在继续,我仍然不知道如何导入和格式化日期。另外,CSV最初是以16-04-1995为例格式化的,它是从一种医疗器械中输出的,我手动地将它输入到一个很明显的D3将使用的年月日格式中。我已经用了好几个小时的时间使用谷歌才走到这一步,所以我显然缺少一些关键的理解。

EN

回答 1

Stack Overflow用户

发布于 2017-03-12 01:38:42

+d.Date的工作方式不是你想要的。在+上调用16-04-1995将导致NaN。你不能把那个字符串转换成那样的数字。

您可以像这样转换字符串,var myDate = new Date('04-16-1995')

不幸的是,您的格式是日-月-年,而javascript需要月-日-年.

关于如何处理这个问题,请看这个问题:

Convert dd-mm-yyyy string to date

Update @GerardoFurtado在他的评论中指出,d3库有一些内置的日期解析选项,可以转换不同格式的日期。请参阅他评论中的链接。

使用d3,可以将字符串转换为如下日期:

var myDate = d3.timeParse("%d-%m-%Y")('16-04-1995')

或者,在你的循环中:

Date: d3.timeParse("%d-%m-%Y")(d.Date)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42742678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档