问题描述
Pandas具有出色的.read_table()
功能,但是大文件会导致MemoryError.
由于我只需要加载满足特定条件的线,因此我正在寻找一种仅加载那些条件的线.
Pandas has the excellent .read_table()
function, but huge files result in a MemoryError.
Since I only need to load the lines that satisfy a certain condition, I'm looking for a way to only load those.
这可以使用一个临时文件来完成:
This could be done using a temporary file:
with open(hugeTdaFile) as huge:
with open(hugeTdaFile + ".partial.tmp", "w") as tmp:
tmp.write(huge.readline()) # the header line
for line in huge:
if SomeCondition(line):
tmp.write(line)
t = pandas.read_table(tmp.name)
有没有办法避免使用临时文件?
Is there a way to avoid such a use of a temp file?
推荐答案
您可以使用chunksize参数返回迭代器
you can use the chunksize parameter to return an iterator
请参见: http ://pandas.pydata.org/pandas-docs/stable/io.html#iterating-through-files-chunk-by-chunk
- 根据需要过滤块框架
- 将过滤后的内容追加到列表中
- 最后的concat
(或者,您也可以将它们写到新的csvs或HDFStores或其他内容中)
(alternatively you could write them out to new csvs or HDFStores or whatever)
这篇关于使用pandas加载经过过滤的.tda文件的最简单方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!