【问题标题】:Sorting really large table from CSV files从 CSV 文件中对非常大的表进行排序
【发布时间】:2018-07-22 04:31:50
【问题描述】:

我的表格中有大约 1 亿行。该表有几列,但最重要的列是 3。假设列 colAcolBcolC

我想对按colAcolB 分组的colC 值进行排序。

所以,例如:

colA    colB    colC
A       B       1
C       A       3
C       B       1
B       C       5
A       B       2
C       B       8

我希望结果是:

colA    colB    colC
A       B       1
A       B       2
B       C       5
C       A       3
C       B       1
C       B       8

假设有大约 10,000 个 colA 值和 2000 个 colB 值,总行数可以达到 100,000,000 行。

如何有效地使用 R 或 python 对其进行排序?

附加信息:

我的电脑有 10 个内核和 62 GB 可用 RAM。

【问题讨论】:

  • 有多少列(你关心它们)?
  • 有 10 列,但只有 3 列重要。
  • 如果您的数据可以放入 RAM,请使用 data.table 包的 fread 功能。然后使用data.table中的排序。我稍后会发布完整的代码。
  • 那么缺失的列值用null表示?
  • 你试过 pandas for python 吗?

标签: python r csv sorting


【解决方案1】:

这在data.table 中非常简单:

fread("csv-file.csv", select = c("colA", "colB", "colC"), key = c("colA", "colB", "colC"))

截至2018年2月,fread的开发版比稳定版快很多:https://github.com/Rdatatable/data.table/wiki/Installation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2010-10-30
    • 2021-02-15
    • 2015-02-27
    • 2013-01-04
    • 2016-03-16
    相关资源
    最近更新 更多