使用Ruby CSV提取一列
我一直在尝试从csv文件中获取单个列。
我已经阅读了文档, http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html但仍然不太了解如何使用它。
如果我使用CSV.table
,与CSV.read
相比,响应速度非常慢。 我承认我加载的数据集非常大,这正是我只想从中获取单个列的原因。
我的请求目前看起来像这样
@dataTable = CSV.table('path_to_csv.csv')
当我调试时,我收到了回复
#
文档说我应该能够使用by_col() ,但是当我尝试输出时
它给了我“未定义的方法’col’错误”
有人可以向我解释我应该如何使用CSV? 如果有一种方法可以使用’read’代替’table’来更快地获取列?
我正在使用Ruby 1.92,它说它使用的是更快的CS,因此我不需要使用FasterCSV gem。
要从csv中删除一列,我可能会执行以下操作:
col_data = [] CSV.foreach(FILENAME) {|row| col_data << row[COL_INDEX]}
这应该比CSV上的任何操作快得多。表
您可以使用以下代码段从csv文件的单个列中获取值。
@dataTable = CSV.table('path_to_csv.csv') @dataTable[:columnname]