【问题标题】:IPython and OS X terminal output is line wrapping before column limitIPython 和 OS X 终端输出在列限制之前换行
【发布时间】:2014-01-18 02:56:28
【问题描述】:

我正在使用 IPython 与允许 DataFrame 对象的 pandas 模块一起工作。当我运行一些代码时,我得到一个输出,其中DataFrame 输出在我的终端宽度之前环绕,尽管终端宽度应该适应长度。这个问题似乎只存在于 pandas Series 和 DataFrame 对象,而不是一个长列表。

运行pip uninstall readline,然后通过easy_install重新安装readline并重启IPython并没有解决问题。

看到我的数据没有像那样分解会很有帮助,但老实说,我不知道从哪里开始解决这个问题。有什么见解吗?

【问题讨论】:

  • 如果您在开始 IPython 之前调整终端大小会发生什么?如果问题仅出现在DataFrame 上,则意味着这是DataFrame 的格式化程序错误。可能是由于某种原因,ipython 无法接收宽度变化,或者格式化程序无法正确处理不同的大小。
  • 如果问题是终端大小从 Terminal.app 通过多层更改到您的代码,您可以走得更远,只需创建一个起始大小为 256 或其他值的新终端配置文件,而不是80(在首选项|设置|窗口)。
  • @Bakuriu 听起来不错。 DataFrame 上有一些格式正在换行,不管终端宽度如何,尽管有多个层,但似乎可以正确访问(例如,长列表输出为全宽)。我实际上找到了解决方法,所以我会回答这个问题。

标签: python terminal pandas ipython osx-mavericks


【解决方案1】:

我找到了一种解决方法,可以让控制台输出更具可读性。对 DataFrame 对象调用 to_string() 会返回该对象的字符串表示形式,绕过 DataFrame 包含的任何固有格式,尤其是因为目标是可读性。

data = DataFrame(some_long_list)
print data.to_string() # outputs to console's full-width

编辑: 来自 pandas 文档:“自 0.10.0 以来的新功能,现在默认情况下将跨多行打印宽数据帧”。我看到这作为默认设置很有帮助,因此您不会将行塞进下一行,而是按列分隔。还有另外两种配置输出宽度的方法:

import pandas as pd 
pd.set_option('line_width', 40) # default is 80

或完全关闭换行功能:

pd.set_option('expand_frame_repr', False)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 2017-11-26
    • 2016-11-04
    • 2011-01-12
    • 2021-11-27
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多