使用pandas迭代大型csv(不使用块)

2024-04-19 23:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个小的简单脚本来读取和处理一个巨大的CSV文件(约150GB),该文件每循环读取5e6行,将其转换为Pandas数据帧,对其执行某些操作,然后继续读取下一个5e6行。在

尽管它完成了这项工作,但在每次迭代中,查找下一个要读取的行块需要更长的时间,因为它必须跳过更多的行。 我读了很多关于chunk(作为一个reader iterator)使用的答案,尽管一旦chunk被读取,我就需要连接chunk来创建一个DataFrame(有关于被截断的行和内容的各种问题),所以我不想走这条路。在

是否可以使用某种光标来提醒read_csv函数从停止的位置开始读取?在

代码的主要部分如下所示:

while condition is True:
    df = pd.read_csv(inputfile, sep=',', header = None, skiprows = sr, nrows = 5e6)
    # do something with df
    sr = sr + 5e6
    # if something goes wrong the condition turns False

Tags: 文件csv数据脚本pandasdfread时间
1条回答
网友
1楼 · 发布于 2024-04-19 23:28:07

使用你的方法熊猫将不得不开始阅读这个巨大的CSV文件从一开始,一次又一次,以跳过行。。。在

我想您确实想使用chunksize参数:

reader = pd.read_csv(inputfile, sep=',', header=None, chunksize=5*10**6)

for df in reader:
    # do something with df
    if (something goes wrong):
        break

相关问题 更多 >