我检查了read_table with stringIO and messy file但它有一些我无法像这个原始对象那样重现的东西。无论如何,我想写一个表到StringIO
文件对象,然后使用StringIO
方法在pandas
中打开read_table
文件对象,但我得到{{1} }。我要写的文件太大而无法存储在内存中,所以我想以块的形式阅读它。使用EmptyDataError: No columns to parse from file
作为测试示例。使用Python 3.5.1 btw
StringIO
答案 0 :(得分:3)
StringIO使用指针跟踪流中的当前位置。将所有数据写入流后,使用f.seek(0)
将指针设置回开始。
import numpy as np
import pandas as pd
from io import StringIO
#StringIO to write to
f = StringIO()
#Write to StringIO
dist = np.random.normal(100, 30, 10000)
for idx,s in enumerate(dist):
f.write('{}\t{}\t{}\n'.format("label_A-%d" % idx, "label_B-%d" % idx, str(s)))
# rewind the stream
f.seek(0)
#Pandas DataFrame from it
DF = pd.read_table(f,sep="\t",header=None)
#EmptyDataError: No columns to parse from file