Pandas to_csv(sys.stdout)在我的环境下不起作用

kii*_*chi 8 python macos python-2.7 python-3.x pandas

我运行了以下简单脚本:

import sys
import pandas as pd
df = pd.DataFrame([[1,2,3], [4,5,6]])
df.to_csv(sys.stdout)
Run Code Online (Sandbox Code Playgroud)

预期输出(作为标准输出)

,0,1,2
0,1,2,3
1,4,5,6
Run Code Online (Sandbox Code Playgroud)

但是,我在macOS 10.12.6上的Python 2.7.15下的程序没有输出标准输出.相反,它生成了一个名为<stdout>包含预期输出的文件.

有趣的是,在同一个操作系统上,Python 3.6.5可以将结果显示为标准输出而没有任何问题,并且虚拟化的 Python 3.6.5无法显示它(并生成<stdout>文件).

有没有人确定这个结果的原因?熊猫的版本是0.23.1.

Bil*_*ill 9

根据您最终尝试执行此解决方法的目的,可能有用也可能没用:

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
Run Code Online (Sandbox Code Playgroud)

(Python 3.6)

对于 Python 2.7,将上面的一行替换为:

from StringIO import StringIO
Run Code Online (Sandbox Code Playgroud)

更新:

实际上,我认为这可能是“正确”的做法

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
Run Code Online (Sandbox Code Playgroud)