【发布时间】:2017-06-23 21:05:11
【问题描述】:
基本上,我想通过我读入的 CSV 进行搜索。它将作为数组数组读入。我只想提取行的第一个元素等于某个值的行。如果这是真的,我想然后将行作为一个单元提取并将其添加到数组中以进行进一步的数据处理。
现在,我正在使用
CSV.foreach(filepath) do |row|
if (row[0] == experiment)
exp1 = true && (row[0] == experiment) && row[7] == data)
if exp1
exp1_array.push(row)
end
end
end
目前发生的情况是它太慢了,因为 CSV 是一个巨大的文件。我想知道是否有人有一种非常快速的方法来读取 CSV、检查条件并在条件为真时添加到特定数组。
另外,如果第一行是experiment1的名称,我需要添加到exp1_array,如果第一行是experiment2的名称,我需要添加到exp2_array,这就是第一个if条件检查存在的原因。
如果有人可以帮助我将非常感激!
【问题讨论】:
-
大文件会很慢。不过,定义“巨大”并定义“慢”。这里没有繁重的计算,所以没有简单的方法来解决这个问题。也许您可以以某种方式预先过滤您的 CSV 文件?
-
什么是
experiment?是变量还是方法调用? -
是的,我想我正在寻找预过滤我的 CSV,只是想知道一些可以帮助我这样做的方法?
-
实验是变量,我要匹配的字符串的名字
-
@engineersmnky :是的,MongoDB is web-scale ;)