【发布时间】:2010-09-27 08:09:20
【问题描述】:
我有几个包含数千列的大型 csv 文件,我需要导入这些文件,然后删除基于列内容的整个列。有没有简单的方法在 Ruby 中处理这个问题?
我可以转置数据,然后只删除行,但我想知道是否有一种在语法上更甜的方式来做这件事。
【问题讨论】:
我有几个包含数千列的大型 csv 文件,我需要导入这些文件,然后删除基于列内容的整个列。有没有简单的方法在 Ruby 中处理这个问题?
我可以转置数据,然后只删除行,但我想知道是否有一种在语法上更甜的方式来做这件事。
【问题讨论】:
您需要使用Array#slice! 迭代行并删除列。
类似:
my_array.each do |row|
row.slice!(3) if <insert condition>
end
应该这样做。
【讨论】:
由于您需要将 csv 中的所有列分配给数据库中的列,您只需忽略 csv 中不需要的列。 This 博文就是一个很好的例子。
【讨论】:
在黑暗中拍摄,但如果条件足够简单,并且您可以以某种方式对数据进行采样以查看需要删除哪些列,也许您可以首先跳过导入列,如果可能的话应该比切片更快,否则就是这样。
【讨论】:
我最终使用转置,然后使用 reverse_each 从底部行切片开始工作!在需要删除的行上。感谢您的帮助。
【讨论】: