关于python:我如何阅读大型csv(20G)

how do I read a large csv(20G)

本问题已经有最佳答案,请猛点这里访问。

我是python.my的新用户问题是这样的:

我有三个csv文件(每个大约15G,并有三列),我想将它们读入python并删除dur = 0的行
我的csv是这样的。

1
2
3
4
5
6
7
8
sn_fx   sn_tx   dur
5129789 3310325 2
5129789 5144184 1
5129789 5144184 1
5129789 5144184 1
5129789 5144184 1
5129789 6302346 4
5129789 6302346 0

我知道我应该逐行阅读,我尝试这样:

1
2
3
file='cmct_0430x.csv'
for line in file.xreadlines():
    pass

但它似乎不起作用。

此外,我不知道如何将这些线转换为数据帧。

有人可以告诉我更多关于此的细节,我将非常感谢你!


你应该使用熊猫。 并读取适当大小的chunks(处理的行数)中的csv。 然后使用concat获取所有块。

1
2
3
4
from pandas import *

tp = read_csv('cmct_0430x.csv', iterator=True, chunksize=1000)
df = concat(tp, ignore_index=True)

熊猫:Read_csv

您正在收到内存错误,因为您正在处理整个csv,其时间大于主内存的大小。 尝试以块的形式打破它然后处理它。