javascript - d3/js 数据操作删除列
问题描述
我在 csv 中有一个数据集,如下所示。
country,col1,col2,col3
Germany,19979188,11233906,43.7719591
UK,3839766,1884423,50.92349378
France,1363608,796271,41.60557873
Italy,957516,557967,41.72765781
我想在保留国家和 col3 的同时删除 col1、col2。如果可能的话,我想将它包装到一个函数中,我可以在其中传递我想删除/保留的列列表。
使用我熟悉的 pandas,我可以轻松做到。例如 data.drop(['col1', 'col2'], axis = 1)。但我发现 d3 方式或 js 方式通常是基于每一行的,所以无法想出删除列的想法。
我正在考虑 d3.map() 只取所需的列。但是我坚持构建一个可以传入列列表的通用函数。
任何人都可以有想法吗?
解决方案
D3 fetch 方法,如d3.csv
,将检索整个CSV 并将基于该 CSV 创建一个对象数组。因此,过滤掉一些列是没有用的。实际上,这比无用更糟糕:您将花费时间和资源进行不必要的操作。
因此,唯一有用的解决方案是,如果您有权访问并拥有该 CSV,则创建一个没有这些列的新 CSV。这样,您将拥有一个更小的文件,加载速度更快。否则,如果您无法更改 CSV 本身,请不要打扰:只需加载整个内容并使用您想要的列(这将是对象中的属性),而忽略其他列。
最后,如果你有很多数据操作,减少数据数组中对象的大小可能会很有趣。如果是这种情况,请使用行函数仅返回您想要的属性。例如:
d3.csv(url, function (d){
return {country: d.country, col3: d.col3}
}).then(etc...)
推荐阅读
- sql-server - SQL联合函数
- windows - .bat 参数的字符限制
- javascript - RxJS,具有动态页面内容的可观察对象
- spring-boot - 无法在 Spring Boot 控制台应用程序的命令行中传递 json 格式键/值
- javascript - 如何使用 Django 中的表单在视图中发布运行时数据
- xcode - 我的应用程序有时会导致 Mac 10.12 上的 WindowServer 高 CPU
- cluster-computing - 不属于集群的客户端的 vertx 服务发现
- jestjs - 运行 promise 后未调用 jest 函数
- r - 将闪亮的输入和反应添加到 Rhandsontable
- java - Java 8 - 从另一个方法返回方法的实时用例是什么?