Ruby CSV :: Table排序到位

时间:2016-06-13 09:25:07

标签: ruby sorting csv

我正在对CSV::Table对象进行排序。我有一个包含标题的表格("date""amount""source")和O(50)条目。

输入:

data = CSV.table('filename.csv', headers:true) # note headers are :date, :source, :amount

amounts = []
data[:amount].each {|i| amounts << i.to_f}

data.sort_by! {|row| row[:amount]} 
# error - not a defined function

data = data.sort_by {|row| row[:amount]} 
# sorted but data is now an array not CSV::Table. would like to retain access to headers

我想要一个bang函数来对"amount"列的表进行排序而不会丢失CSV::Table结构。具体来说,我希望结果是CSV :: Table,这样我仍然可以访问标题。现在,我得到一个数组,这不是我想要的。

我确信有一种更简单的方法可以做到这一点,尤其是CSV::Table类。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

您可以使用:

CSV::Table.new(data)将Array转换为CSV :: Table对象,如果这是你想要的。

sort_by是Enumerable模块中的一个方法,当块作为参数给出时,它总是返回一个数组