1

我有几个包含数千列的大型 csv 文件,我需要导入这些文件,然后删除基于列内容的整个列。有没有一种简单的方法可以在 Ruby 中处理这个问题?

我可以转置数据,然后只删除行,但我想知道是否有一种在语法上更含糖的方式来做这件事。

4

4 回答 4

2

您需要迭代行并使用Array#slice!.

就像是:

my_array.each do |row|
  row.slice!(3) if <insert condition>
end

应该这样做。

于 2008-12-17T14:09:07.413 回答
0

由于您需要将 csv 中的所有列分配给数据库中的列,因此您只需忽略 csv 中不需要的列。这篇博文有一个很好的例子。

于 2008-12-17T16:42:37.743 回答
0

在黑暗中拍摄,但如果标准足够简单,并且您可以以某种方式对数据进行采样以查看需要删除哪些列,也许您可​​以首先跳过导入列,如果可能的话,这应该更快而不是切片,这是另一种方式。

于 2008-12-17T19:24:25.873 回答
0

我最终使用转置,然后使用 reverse_each 从底行切片开始工作!在需要删除的行上。谢谢您的帮助。

于 2008-12-19T20:24:19.350 回答