python-3.x - pandas pd.read_table 支持 io.BytesIO 和 StringIO 吗?

标签 python-3.x pandas bytesio

我有一个 io.BytesIO 对象 iostream,它是从磁盘读取的 be2 文件,我将把列标题附加到表/iostream

f = io.BytesIO()
f.write(b'A,B,C,D\n')
f.write(iostream.getvalue())

pd.read_table(f, sep=',', index_col=False, error_bad_lines=False, encoding='utf-8', dtype=type_map)

但它给了我一个错误,

pandas.errors.EmptyDataError: No columns to parse from file

我想知道如何解决这个问题。

也尝试过

f = io.StringIO()
f.write('A,B,C,D\n')    
f.write(iostream.getvalue().decode())

pd.read_table(f, sep=',', index_col=False, error_bad_lines=False, encoding='utf-8', dtype=type_map)

出现错误

pandas.errors.ParserError: Error tokenizing data. C error: Calling read(nbytes) on source failed. Try engine='python'.

最佳答案

我成功地重现了您的错误。您第一次尝试时遇到的问题是,在调用“pd.read_table”时,您位于流“f”的末尾,因为您刚刚写入了所有内容。 'pd.read_table' 在内部调用 read(),它从当前位置读取。所以它返回一个空字符串。这是错误的原因:

 pandas.errors.EmptyDataError: No columns to parse from file

解决办法很简单。您只需使用“seek”再次移动到流的开头即可。这段代码对我有用:

f = io.BytesIO()
f.write(b'A,B,C,D\n')
f.write(iostream.getvalue())
f.seek(0)

pd.read_table(f, sep=',', index_col=False, error_bad_lines=False, encoding='utf-8')

关于python-3.x - pandas pd.read_table 支持 io.BytesIO 和 StringIO 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49514662/

相关文章:

python - while 循环在抛出垃圾值时不会重复自身

python - Pandas 字符串操作 : Dynamically select column depending on other columns content

macos - 用貌似不存在的SDK编译 :/Developer/SDKs/MacOSX10. 6.sdk

python-3.x - python3.0上的setuptools

python - 如何将一系列整数转换为日期?

python-3.x - 枕头 : image to bytes to image

python - 从数据流而不是文件加载图像

python - 从压缩字节加载 numpy 数组

python - 根据条件创建求和行

python - 获取 python numpy 数组的列名