Pandas to_csv(sys.stdout) 在我的环境下不起作用
Posted
技术标签:
【中文标题】Pandas to_csv(sys.stdout) 在我的环境下不起作用【英文标题】:Pandas to_csv(sys.stdout) doesn't work under my environment 【发布时间】:2018-12-14 12:55:55 【问题描述】:我运行了以下简单脚本:
import sys
import pandas as pd
df = pd.DataFrame([[1,2,3], [4,5,6]])
df.to_csv(sys.stdout)
预期输出(作为标准输出)
,0,1,2
0,1,2,3
1,4,5,6
但是,我在 macOS 10.12.6 上的 Python 2.7.15 下的程序没有标准输出输出。相反,它生成了一个名为 <stdout>
的文件,其中包含预期的输出。
有趣的是,在同一个操作系统上,Python 3.6.5 可以毫无问题地将结果显示为标准输出,而 virtualenved Python 3.6.5 无法显示(并生成了<stdout>
文件)。
有没有人指出这个结果的原因? Pandas 的版本是 0.23.1。
【问题讨论】:
【参考方案1】:看起来这是一个已知问题:
https://github.com/pandas-dev/pandas/issues/21561
https://github.com/pandas-dev/pandas/pull/21478
【讨论】:
【参考方案2】:取决于您最终尝试执行的操作,此解决方法可能有用,也可能没有用:
In [85]: from io import StringIO
In [86]: output = StringIO()
In [87]: df.to_csv(output)
In [88]: print(output.getvalue())
,0,1,2
0,1,2,3
1,4,5,6
(Python 3.6)
对于 Python 2.7,将上面的一行替换为:
from StringIO import StringIO
更新:
其实我觉得this might be the 'proper' way to do it:
In [3]: from io import StringIO
In [4]: output = StringIO()
In [5]: df.to_csv(output)
In [6]: output.seek(0)
Out[6]: 0
In [7]: print(output.read())
,0,1,2
0,1,2,3
1,4,5,6
【讨论】:
以上是关于Pandas to_csv(sys.stdout) 在我的环境下不起作用的主要内容,如果未能解决你的问题,请参考以下文章