【问题标题】:How do I modify column headers after importing the CSV?导入 CSV 后如何修改列标题?
【发布时间】:2019-02-20 22:40:38
【问题描述】:

我正在尝试使用 d3.csv() 导入 csv 文件,如下所示:

d3.csv("mydata.csv", function(d) { 
console.log(d.columns);
}

这会输出“time”、“rate”、“id”。在将此数据加入 topojson 文件之前,我想更改程序中的第一个和最后一个列标题名称。有没有办法做到这一点?

【问题讨论】:

    标签: javascript csv d3.js


    【解决方案1】:

    那个属性columns只是d3.csv在数据数组中创建的一个属性:

    const csv = `foo,bar,baz
    12,14,13
    2,16,4
    17,42,10`;
    
    const data = d3.csvParse(csv);
    
    console.log(data.columns);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

    你可以随心所欲:

    const csv = `foo,bar,baz
    12,14,13
    2,16,4
    17,42,10`;
    
    const data = d3.csvParse(csv);
    
    data.columns[0] = "I'm a new value!";
    
    console.log(data.columns);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

    你甚至可以完全摆脱它:

    const csv = `foo,bar,baz
    12,14,13
    2,16,4
    17,42,10`;
    
    const data = d3.csvParse(csv);
    
    data.columns.length = 0;
    
    console.log(data.columns);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

    这里真正的问题是:为什么要修改它?正如 API 所解释的那样,该属性包含 CSV 文件中的所有标题:

    返回的数组还公开了一个 columns 属性,其中包含按输入顺序排列的列名。

    因此,columns 属性对于访问您的数据数组非常有用。话虽如此,更改该属性没有什么意义,因为您不再拥有标头名称,并且代码可能会进一步中断。所以,如果你想改变标题名称,我相信改变CSV文件本身是一个更好的选择。

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多