【问题标题】:How can I sort a very large CSV file?如何对非常大的 CSV 文件进行排序?
【发布时间】:2017-01-02 08:29:14
【问题描述】:

我有这么大的 294,000 行 csv,第 1 列中包含 url,第 2 列中包含数字。

我需要将它们从最小的数字排序到最大的数字。我已将其加载到“CSVed”软件中,它处理得很好,它不会崩溃或任何事情,但是当我单击列的顶部对其进行排序时,它不会按从小到大的顺序排列,它是一切都搞砸了。

有人有什么想法吗?找了一整天,想来这里问问。

谢谢。

【问题讨论】:

  • 排序后是否有no顺序?这对我来说听起来很奇怪。您是否可以使用 Java 或 R 等工具?
  • 有一个顺序,但是顺序不对,还是很混乱
  • 例如它会像 170 然后 17050 然后 17 等等。第一个数字会匹配,但如果有意义的话,它会从小数到大到小到小到大
  • 是否将数字排序为单词而不是数字?就像 111 会在 19 之前出现?
  • 您的数据正在按字典顺序排序:en.wikipedia.org/wiki/Lexicographical_order。您需要以某种方式让您的程序相信第二列是数字而不是文本。

标签: csv


【解决方案1】:

如果您可以访问 unix 系统(并且您的网址中没有逗号),这应该可以解决问题:

sort -t',' -n -k2 filename

-t 表示列由逗号分隔,-n 表示数据是数字,-k2 表示根据第二列排序。

【讨论】:

  • 恐怕没有,我只有windows操作系统。
【解决方案2】:

您可以使用 gnu 排序。它占用的内存很小,甚至可以使用多个 CPU 进行排序。

sort -t ,  -k 2n file.csv

默认情况下,大多数 linux 发行版和 MacOS 都可以使用 Gnu 排序(尽管后来的选项略有不同)。您也可以在 Windows 上安装它,例如从 CoreUtils for Windows 页面。

有关排序调用的更多信息,请使用manual

【讨论】:

猜你喜欢
  • 2011-12-16
  • 2018-07-22
  • 1970-01-01
  • 2021-02-15
  • 2010-10-30
  • 2015-02-27
  • 2013-01-04
  • 2017-06-23
相关资源
最近更新 更多