【问题标题】:How can you conditionally remove entire columns from a two dimensional array in Ruby?如何有条件地从 Ruby 中的二维数组中删除整个列?
【发布时间】:2010-09-27 08:09:20
【问题描述】:

我有几个包含数千列的大型 csv 文件,我需要导入这些文件,然后删除基于列内容的整个列。有没有简单的方法在 Ruby 中处理这个问题?

我可以转置数据,然后只删除行,但我想知道是否有一种在语法上更甜的方式来做这件事。

【问题讨论】:

    标签: ruby csv


    【解决方案1】:

    您需要使用Array#slice! 迭代行并删除列。

    类似:

    my_array.each do |row|
      row.slice!(3) if <insert condition>
    end
    

    应该这样做。

    【讨论】:

      【解决方案2】:

      由于您需要将 csv 中的所有列分配给数据库中的列,您只需忽略 csv 中不需要的列。 This 博文就是一个很好的例子。

      【讨论】:

      • 我没有导入数据库,手动跳过行会很麻烦。我只有不到 7000 列。
      【解决方案3】:

      在黑暗中拍摄,但如果条件足够简单,并且您可以以某种方式对数据进行采样以查看需要删除哪些列,也许您可​​以首先跳过导入列,如果可能的话应该比切片更快,否则就是这样。

      【讨论】:

        【解决方案4】:

        我最终使用转置,然后使用 reverse_each 从底部行切片开始工作!在需要删除的行上。感谢您的帮助。

        【讨论】:

          猜你喜欢
          • 2021-03-16
          • 2012-01-21
          • 1970-01-01
          • 1970-01-01
          • 2011-04-11
          • 2017-01-22
          • 2014-12-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多