【发布时间】:2017-08-01 06:37:42
【问题描述】:
我有 2 个压缩的 csv 文件 IMFBOP2017_1.csv.gz 和 IMFBOP2017_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