我正在从许多不同来源导出CSV,这使得在将其放入CSV之前很难进行排序。
csv = CSV.generate col_sep: '#' do |csv|
... adding a few columns here
end
现在,如果我能够通过第二列对此CSV进行排序,那将是非常棒的。这有可能吗?
答案 0 :(得分:4)
如果您在写作之前尝试排序,则取决于您的数据结构,我需要更多地查看您的代码。对于读取csv,您可以将其转换为哈希并按标题名称排序:
rows = []
CSV.foreach('mycsvfile.csv', headers: true) do |row|
rows << row.to_h
end
rows.sort_by{ |row| row['last_name'] }
编辑以使用sort_by,感谢max williams。
答案 1 :(得分:0)
以下是按列号排序的方式:
rows = []
CSV.foreach('mycsvfile.csv', headers: true) do |row|
# collect each row as an array of values only
rows << row.to_h.values
end
# sort in place by the 2nd column
rows.sort_by! { |row| row[1] }
rows.each do |row|
# do stuff with your now sorted rows
end