StringIO和pandas的read_cs

2024-09-28 20:42:56 发布

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

我试着把StringIO和BytesIO和熊猫混为一谈,并努力解决一些基本问题。例如,我不能让下面的“output”工作,而下面的“output2”工作。但是“输出”更接近于我试图做的真实世界的例子。“output2”中的方法来自一个老熊猫的例子,但对我来说并不是一个有用的方法。

import io   # note for python 3 only
            # in python2 need to import StringIO

output = io.StringIO()
output.write('x,y\n')
output.write('1,2\n')

output2 = io.StringIO("""x,y
1,2
""")

它们在类型和内容上似乎是一样的:

type(output) == type(output2)
Out[159]: True

output.getvalue() == output2.getvalue()
Out[160]: True

但不,不一样:

output == output2
Out[161]: False

更重要的是我想解决的问题:

pd.read_csv(output)   # ValueError: No columns to parse from file
pd.read_csv(output2)  # works fine, same as reading from a file

Tags: to方法ioimporttruereadoutputtype
1条回答
网友
1楼 · 发布于 2024-09-28 20:42:56

io.StringIO这里的行为就像一个文件——你写了它,现在文件指针指向了末尾。当你试着在那之后读的时候,在你写的那一点之后就什么都没有了,所以:没有要解析的列。

相反,就像处理普通文件一样,从seek开始,然后读取:

>>> output = io.StringIO()
>>> output.write('x,y\n')
4
>>> output.write('1,2\n')
4
>>> output.seek(0)
0
>>> pd.read_csv(output)
   x  y
0  1  2

相关问题 更多 >