我需要将一个巨大的csv文件中的3列复制到一个新的csv文件中。怎么做?

时间:2015-09-06 08:37:50

标签: ruby csv export-to-csv

我对红宝石很新。这是我的代码:

require 'csv'

csv = CSV.read('C:\Users\hp1\Desktop\Datasets\000.csv', :headers=>true)

p csv['timestamp']
f = File.new('C:\Users\hp1\Desktop\Datasets\Columns_000.csv', 'wb')
    f.puts(p)
    f.close

我想在这段代码中做的是,我想阅读000.csv文件,并将名为“timestamp”的列复制到另一个csv,Columns_000.csv。

但是会发生什么,它会在我的终端上写下timestamp列的值。相反,我希望它在新的csv上写下它们。

我还有2个像我想要复制到新csv的列。有没有办法将它们全部复制在一起,还是我需要逐个复制它们?

1 个答案:

答案 0 :(得分:2)

COLUMNS = ['timestamp', 'other1', 'other2']

# open new csv for writing
CSV.open("C:\Users\hp1\Desktop\Datasets\000_out.csv", "wb") do |csv|
  # iterating existing csv rows
  CSV.foreach('C:\Users\hp1\Desktop\Datasets\000.csv', :headers=>true) do |row|
    # select only those specified above columns
    csv << COLUMNS.map { |col| row[col] }
  end
end