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

如何筛选CSV导入数据,仅保留Year与Matches指定列

问题描述

我有如下格式的CSV数据:

Year      Teams     Matches    Goals
2014      32        64         171
2010      32        64         125
2006      32        64         147
2002      32        64         161
1998      32        64         171
1994      24        52         141

我使用以下代码导入数据:

let promises = [
    d3.csv('data/test-data.csv', d3.autoType),
];

Promise.all(promises)
    .then(function (data) {
        createVis(data)
    })
    .catch(function (err) {
        console.log(err)
    });

随后我有一个用于处理数据并生成图表的createVis()函数:

function createVis(data) {
    let graphData = data[0]
    wrangleData()
}

需求是在wrangleData()函数中仅提取原始数据集的Year和Matches列,最终得到如下格式的filteredData:

Year      Matches   
2014      64        
2010      64        
2006      64        
2002      64        
1998      64        
1994      52        

请问该如何实现这一需求?


解决方案

你可以通过数组的map()方法筛选字段,具体实现步骤如下:

1. 修改createVis()传递数据

首先要把原始数据传入wrangleData(),同时接收处理后的结果:

function createVis(data) {
    let graphData = data[0]
    // 传入原始数据并获取处理后的筛选数据
    const filteredData = wrangleData(graphData)
    // 这里可以继续使用filteredData进行图表渲染操作
}

2. 实现wrangleData()函数

遍历原始数据,为每条数据只保留Year和Matches两个字段:

function wrangleData(rawData) {
    // 用map遍历每条数据,返回仅包含目标字段的新对象数组
    return rawData.map(item => ({
        Year: item.Year,
        Matches: item.Matches
    }))
}

说明

  • map()方法会生成一个全新的数组,不会修改原始数据
  • 每个新对象仅保留你需要的两个字段,结构完全符合预期
  • 因为导入时使用了d3.autoType,Year和Matches已经被自动解析为数值类型,无需额外转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:31:04