【问题标题】:Python 3.6: Compare two large gzipped csv files & fetch difference recordsPython 3.6:比较两个压缩后的大型 csv 文件并获取差异记录
【发布时间】:2017-08-01 06:37:42
【问题描述】:

我有 2 个压缩的 csv 文件 IMFBOP2017_1.csv.gzIMFBOP2017_2.csv.gz,两个文件中的列相同,即 "Location, Indicator, Measure, Unit, Frequency, Date"

总行数 6000 万+

我想比较IMFBOP2017_1 中不存在的IMFBOP2017_2 的文件和显示行。

我的计划是将两个文件都导入数据框,向两个数据框添加一个额外的“比较”列,并通过所有字段合并更新它

位置|指标|测量|单位|频率|日期,不要在操作中。

我认为这是一个昂贵的过程,有什么简单的解决方案吗?

【问题讨论】:

  • 你应该先尝试,然后问有什么可以改进的并提供代码
  • 是的,这是一个昂贵的过程。文件中的行是否以任何方式排序?
  • @PM 2Ring,行未排序。
  • 如果对数据进行排序,查找重复行会快很多。也许您应该使用外部程序对数据进行排序,例如 *nix sort 实用程序,它可以轻松地对太大而无法放入 RAM 的文件进行排序。对数据进行排序后,您可以轻松地对其进行处理,而无需将其全部读入 RAM:您只需要从每个文件中一次读取一行,就可以使用类似于合并两个列表的过程找到所需的行。我不了解 Pandas,所以不知道 Pandas 是否为此提供了函数,但是用纯 Python 编写很容易。
  • @PM 2Ring,感谢您的建议,将应用此

标签: python python-3.x dataframe gunzip


【解决方案1】:

Pandas 可以使用普通的pandas.read_csv() 读取压缩后的数据文件。 Pandas: Diff of two Dataframes 中描述了如何在两个数据帧之间进行差异。

【讨论】:

  • 我参考了上面给出的链接,它的工作......非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多