require 'csv'
csv = CSV.read('test.csv', :headers=>true)
p csv['name'] #=>["Raja", "Mathew", "harin", "Soumi"]
#or even:
t = CSV.table('test.csv')
p t[:no1] #=> [77489, 77559, 77787, 77251]
Обратите внимание, что в последнем случае доступ колов осуществляется по их символическому имени и что строки, когда это возможно, преобразуются в числа.
Ответ 3
Транспонировать ваш CSV файл. Делая это, ваши строки скрыты до столбца и наоборот. Ниже простой пример транспонирования.
Скучно, поэтому решил приготовить альтернативное решение здесь. Работает только (здесь), если первая строка имеет максимальное количество столбцов
columns = {}
rows.first.each_with_index do |col, i|
columns[i] = []
end
rows.each do |row|
row.each_with_index do |cell, i|
columns[i] = columns[i] + [cell]
end
end
Теперь вы можете иметь доступ к каждому столбцу по индексу