从 D3.js 中的数据中删除 NaN 值

Remove NaN values from data in D3.js

这是我的代码:

d3.csv('stockdataToPlot.csv', function(d){
  return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
          aapl_sma: d.SMA_AAPL, tsla : d.TSLA, tsla_sma: d.SMA_TSLA}
}).then(plot_data);

我想从 d.SMA_AAPLd.SMA_TSLA 中删除 NaN 值 如果有人帮助我正确地合并 this 示例,我将不胜感激:

d3.csv('stockdataToPlot.csv', function(d){
  var data = d.filter(function(e){
        if(isNaN(e.value)){
            return false;
        }
        e.value = parseInt(e.value, 10);
        return true;
    });
  return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
          aapl_sma: data.SMA_AAPL, tsla : d.TSLA, tsla_sma: data.SMA_TSLA}
}).then(plot_data);

当前错误为TypeError: d.filter is not a function。这是令人困惑的,因为 .filter 将数据数组作为参数,它应该是第一行中引用的 d

这是文档中的一行精简代码: const result = words.filter(word => word.length > 6); 这是怎么改编的? var data = d.filter(?? => ??.isNan(??));?

我确定我想多了,但我是 javascript 的新手,我不完全理解它是如何工作的。在 python pandas 我会做 data.dropna() :(

固定:

d3.csv('stockdataToPlot.csv', function(d){
  function removeNaN(e,c){
    if(e>0){return e}else{return c}
  }
  return {date : d3.timeParse("%Y-%m-%d")(d.Date), aapl : d.AAPL,
          aapl_sma: removeNaN(+d.SMA_AAPL,d.AAPL), tsla : d.TSLA, tsla_sma: removeNaN(+d.SMA_TSLA,d.TSLA)}
}).then(plot_data);

在我的例子中,NaN 注册为“”,当使用 + 传递时默认为 0。幸运的是,我的数据中没有任何小于或等于 0 的值。我没有删除它们,而是用与收盘价相同的值替换它们,因为它只是一个移动平均线。不太理想,但暂时还可以。