我正在尝试将StringIO和BytesIO与熊猫混合使用,并尝试使用一些基本的东西。例如,我下面的“输出”无法工作,而下面的“ 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
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句