Javascript 导入csv数据时分析带有日期的标题行
我正在使用d3导入一个CSV文件进行数据可视化。我的CSV文件包含需要转换为日期的标题行,以及需要转换为整数的数据:Javascript 导入csv数据时分析带有日期的标题行,javascript,csv,datetime,d3.js,Javascript,Csv,Datetime,D3.js,我正在使用d3导入一个CSV文件进行数据可视化。我的CSV文件包含需要转换为日期的标题行,以及需要转换为整数的数据: ISBN,2019-08,2019-09,2019-10 9782749205465,107,488,218 9789423069313,95,87,186 我可以使用以下方法导入CSV文件并将数据解析为整数: d3.csv("/assets/2019-20-download-stats.csv").then(function (data) { data.forEach(f
ISBN,2019-08,2019-09,2019-10
9782749205465,107,488,218
9789423069313,95,87,186
我可以使用以下方法导入CSV文件并将数据解析为整数:
d3.csv("/assets/2019-20-download-stats.csv").then(function (data) {
data.forEach(function(d) {
d.ISBN = +d.ISBN;
d['201908'] = +d['201908'];
d['201909'] = +d['201909'];
d['201910'] = +d['201910'];
});
});
但标题行都是输出数组中的字符串,例如:
{
"201908": 107,
"201909": 488,
"201910": 218,
"ISBN": 9782749205465,
}
导入数据时如何格式化标题行?这几乎肯定是一个问题。我看不到任何情况下,您的数据应该具有以日期为键的对象。除此之外,请注意,如果您将日期对象作为对象的键传递,JavaScript会自动将其转换为字符串。如果你(出于任何原因)真的想把日期作为关键,你应该使用一个 尽管如此,这里是您应该做的:在行转换函数中(代码中没有),检查日期
if (!isNaN(new Date(key).getTime()))
。。。如果您找到一个,请使用newdate
生成密钥:
foo[new Date(key)] = +d[key]
下面是一个使用d3.csvParse
的演示(这与您的d3.csv
完全相同):
const csv=`ISBN,2019-082019-092019-10
9782749205465,107,488,218
9789423069313,95,87,186`;
const data=d3.csvParse(csv,行);
功能行(d){
const newObject={};
for(变量键在d中){
如果(!isNaN(新日期(key).getTime()){
新对象[新日期(键)]=+d[键]
}否则{
newObject[key]=+d[key]
}
};
返回newObject;
};
console.log(数据)