所以基本上我试图通过Ruby在一个巨大的csv文件中查找一些信息(注意我不想要excel解决方案),我已将unix时间戳转换为适当的时间对象,并对它们进行排序并通过#select过滤。我试图在给定的特定时间范围内找到有关purchase_amt的信息(我用start_date,end_date表示)。pure ruby:通过#select过滤csv日期,但现在想要基于这些日期范围获得另一列
目前我只有一个通过巨大的csv过滤的时间数组,但我怎样才能使用我的代码来获取csv中给出的purchase_amt?
Unix_time purchase_amt
1352948920 12.40
require 'csv'
require 'date'
start_date = DateTime.rfc3339('2014-06-22T00:00:00Z').to_time.to_i
end_date = DateTime.rfc3339('2014-07-22T00:00:00Z').to_time.to_i
csv = CSV.parse('sample_data.csv', headers: true, encoding: 'ISO-8859-1')
csv.each do |row|
if (row['created_at'] >= start_date && row['created_at'] <= end_date)
final_arry<< row
end
end
puts csv
我想我会通过CSV [“purchase_amt”]这是直截了当访问purchase_amt,但我想知道我怎么再与处理这个庞大的阵列并应用我之前做过的筛选工作... – cristodagama
一个解决方案可能是在第一次迭代时在csv中修改列值(Unix_time),因此每列都有根据您的需求的日期,然后在第二次迭代你可以检查它是否属于start_date或end_date..if是,然后获取行['purchase_amt']。 – Abhinay
你能澄清吗?也许给我举个例子吧? – cristodagama