【发布时间】:2016-12-06 13:46:00
【问题描述】:
我有一个非常大的 CSV 文件,其中包含超过 5 亿行。
但是我只需要根据特定条件从中提取几千行。 我目前正在使用:
with open('/home/Documents/1681.csv', 'rb') as f:
reader = csv.DictReader(f)
rows = [row for row in reader if row['flag_central'] == 1]
这里的条件是如果flag_central == 1,我需要该行。
但是,由于文件非常大,我无法执行上述代码。我相信这是因为我使用的for 循环导致了这个问题。
我是否可以根据上述条件从 CSV 文件中提取这些特定行?
【问题讨论】:
-
使用 grep 并过滤您想要的内容并将其通过管道传输到 python 并以 csv 格式读取。
-
@YOU:你能举个例子作为答案吗?
-
上面的代码到底发生了什么?吃掉内存?无限执行?因错误而崩溃?
-
@deceze:比方说无限执行!!已经运行了1个多小时了!!
-
它将花费 500'000'000 /(每行时间),因此要低于 1 小时,您必须处理 500'000'000 / 3600 = 138'888 行/秒。不确定这是否可以通过任何方法以串行方式轻松实现。
标签: python csv for-loop conditional-statements extraction