python - Pandas Chunksize 迭代器

标签 python pandas

我有一个 1GB、70M 行的文件,每次我加载它时它都会耗尽内存。我已经阅读了 1000 行,并且能够制作出我希望它执行的原型(prototype)。

我的问题是不知道如何获取接下来的 1000 行并应用我的逻辑,然后继续运行我的文件直到完成最后一行。我读过有关分块的信息,但我不知道如何继续分块的迭代。

理想情况下,它会像这样流动:

1)读入前1000行 2)根据条件过滤数据 3)写入csv 4)重复直到没有更多的行

这是我目前所拥有的:

import pandas as pd
data=pd.read_table('datafile.txt',sep='\t',chunksize=1000, iterator=True)
data=data[data['visits']>10]
with open('data.csv', 'a') as f:
    data.to_csv(f,sep = ',', index=False, header=False)

最佳答案

你的逻辑有问题,我们想遍历数据中的每个 block ,而不是数据本身。

“chunksize”参数为我们提供了一个可以迭代的“textreader 对象”。

import pandas as pd
data=pd.read_table('datafile.txt',sep='\t',chunksize=1000)

for chunk in data:
    chunk = chunk[chunk['visits']>10]
    chunk.to_csv('data.csv', index = False, header = False)

您需要考虑如何处理标题!

关于python - Pandas Chunksize 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47063033/

相关文章:

python - statsmodels 汇总到 latex

python - UTF-8 编码 Pandas DataFrame 到 MySQL

python - 长度必须匹配才能比较( Pandas 根据两个标准进行选择)

python - Django 将主服务器与 mysql db 一起切换到辅助服务器

python - 在 Django ORM : Select record from each group with maximal value of a given attribute

python - 找不到记录器 "deluge"的处理程序

python - R 的 %in% 函数的 python 版本

python - Pandas:如果索引存在,则将一列的值添加到另一列

python - 如何将带有换行符的列标题读入 Pandas?

python - 通过 MySQL 更新增加的值