【问题标题】:How to configure display output in IPython pandas如何在 IPython pandas 中配置显示输出
【发布时间】:2014-01-21 04:30:50
【问题描述】:

我正在尝试在我的 OS X 终端中配置我的 IPython 输出,但我尝试设置的所有更改似乎都没有生效。我正在尝试配置显示设置,以便像大 DataFrame 这样更宽的输出将在没有任何截断或作为摘要信息的情况下输出。

将 pandas 导入我的脚本后,我设置了一些选项,我尝试了一大堆,但任何一个(或全部,就此而言)似乎都没有生效。我正在使用 %run 从 IPython 运行脚本。我在这里做错了吗?

import pandas as pd

pd.set_option('display.expand_max_repr', False)
pd.set_option('display.max_columns', 30)
pd.set_option('display.width', None)
pd.set_option('display.line_width', 200)

我查看了 Stack 上的 some threadspandas FAQ 无济于事,即使在显示命名空间(或不使用)下使用它们时,正如我在这里尝试过的那样。

我知道有一些方法可以解决这个问题,例如在您的输出中调用 to_string()describe() 方法,但这些方法非常手动,并且在某些情况下并不总是按预期工作,例如我在 groupby 对象上调用 to_string() 会产生:

    id       type
106125       puzzle       gameplay_id  sitting_id  user_id           ...
106253       frames       gameplay_id  sitting_id  user_id           ...
106260       trivia       gameplay_id  sitting_id  user_id           ...

我的终端窗口大小足以容纳宽度,并且调用pd.util.terminal.get_terminal_size() 可以正确找到窗口大小元组,因此自动检测大小似乎也不起作用。任何见解将不胜感激!

【问题讨论】:

  • 你考虑过使用 iPython Notebook 吗?您可以在 HTML 中呈现数据帧,这样您就可以查看数据的未截断版本。
  • 是的,这听起来很有趣,直到现在我还没有真正考虑过(我是 pandas 的新手)。您知道启动和运行它的好资源吗?
  • 嗯...天哪,我安装它已经很久了。你基本上安装了 iPython,然后在命令行中输入 ipython notebook。它是一个非常有用的工具,你可以编写 markdown,包括图表、图片、视频、HTML、LaTex 等。它非常了不起。对于数据工作流程,我认为它根本无法被击败。我为我的组织准备了这个笔记本,展示了 iPython 可以做的一些事情......goo.gl/1Vneam 启动和运行真的不难。
  • 原来使用 anaconda 相对容易(附带它),所以我现在开始使用笔记本电脑了。只需要在 conda 上运行一些更新,甚至在此过程中得到更新 pip 的提示;)
  • @Chrispy 你错过了 max_colwidth ...看起来你的专栏很长?

标签: python terminal pandas ipython


【解决方案1】:

为了完整起见(我将添加我的评论作为答案),您错过了:

pd.options.display.max_colwidth  # default is 50

这限制了单列的最大长度。

这里有很多选项可以配置,如果你使用的是 ipython 然后 tab 完成找到full set of display options

pd.options.display.<tab>

【讨论】:

  • Andy -- 当尝试在master 中设置display.max_colwidth=None 时,我得到ValueError: Value must have type '&lt;type 'int'&gt;'。关于如何删除此限制的任何想法(以同样的方式 None 删除其他选项的限制?)
  • @user815423426 你试过 display.max_colwidth=0 吗?
【解决方案2】:

该解决方案适用于字符串,但不适用于带有数字的列。在这种情况下,要获得正确的宽度,可以通过以下方式更改格式:

pd.set_option('display.float_format', '{:15.10f}'.format)

另外,只更改一次而不是整个笔记本的显示:

with pd.option_context('display.max_colwidth', None):
    print(df)  # or display(df)

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 2013-08-25
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多