228

我在查看以下内容时遇到问题DataFrame

n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo

问题是它不会在 ipython 笔记本中默认打印所有行,但我必须切片才能查看结果行。即使以下选项也不会更改输出:

pd.set_option('display.max_rows', 500)

有谁知道如何显示整个数组?

4

7 回答 7

400

设置display.max_rows

pd.set_option('display.max_rows', 500)

对于旧版本的 pandas (<=0.11.0),您需要同时更改display.heightdisplay.max_rows.

pd.set_option('display.height', 500)
pd.set_option('display.max_rows', 500)

另请参阅pd.describe_option('display')

您可以像这样暂时只为此一次设置一个选项:

from IPython.display import display
with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    display(df) #need display to show the dataframe when using with in jupyter
    #some pandas stuff

您还可以将选项重置为其默认值,如下所示:

pd.reset_option('display.max_rows')

并将它们全部重置:

pd.reset_option('all')

于 2013-05-08T06:20:24.630 回答
59

就个人而言,我喜欢直接使用赋值语句设置选项,因为 iPython 很容易通过制表符完成找到。我发现很难记住确切的选项名称是什么,所以这种方法对我有用。

例如,我只需要记住它的开头是pd.options

pd.options.<TAB>

在此处输入图像描述

大多数选项都可以在display

pd.options.display.<TAB>

在此处输入图像描述

从这里,我通常会输出当前值是这样的:

pd.options.display.max_rows
60

然后我将它设置为我想要的:

pd.options.display.max_rows = 100

此外,您应该了解选项的上下文管理器,它会在代码块内临时设置选项。将选项名称作为字符串传入,后跟您想要的值。您可以在同一行中传入任意数量的选项:

with pd.option_context('display.max_rows', 100, 'display.max_columns', 10):
    some pandas stuff

您还可以将选项重置为其默认值,如下所示:

pd.reset_option('display.max_rows')

并将它们全部重置:

pd.reset_option('all')

通过设置选项仍然非常好pd.set_option。我只是发现直接使用属性更容易,并且不需要get_optionand set_option

于 2017-11-04T17:46:38.347 回答
48
pd.set_option('display.max_rows', 500)
df

在 Jupyter 中不起作用
而是使用:

pd.set_option('display.max_rows', 500)
df.head(500)
于 2020-03-21T17:32:49.733 回答
12

此评论此答案中已经指出了这一点,但我会尝试对这个问题给出更直接的答案:

from IPython.display import display
import numpy as np
import pandas as pd

n = 100
foo = pd.DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)

with pd.option_context("display.max_rows", foo.shape[0]):
    display(foo)

pandas.option_context从 pandas 0.13.1(pandas 0.13.1 发行说明)开始可用。据此,_

[它] 允许 [s] 您执行带有一组选项的代码块,这些选项在您退出 with 块时恢复到先前的设置。

于 2018-07-19T23:54:37.440 回答
9

正如@hanleyhansen 在评论中指出的那样,从 0.18.1 版开始,该display.height选项已被弃用,并表示“display.max_rows改为使用”。所以你只需要像这样配置它:

pd.set_option('display.max_rows', 500)

请参阅发行说明 — pandas 0.18.1 文档

弃用 display.height,display.width 现在只是一个格式化选项,不控制摘要的触发,类似于 < 0.11.0。

于 2017-05-08T00:39:45.240 回答
8

设置无限数量的行使用

没有任何

IE,

pd.set_option('display.max_columns', None)

现在笔记本将显示笔记本内所有数据集中的所有行;)

同样,您可以设置将所有列显示为

pd.set_option('display.max_rows', None)

现在,如果您使用只有数据框且没有任何头或尾标签的单元格运行

df

然后它将显示数据框中的所有行和列df

于 2020-09-22T17:56:48.333 回答
4

正如对类似问题的回答一样,无需破解设置。写起来要简单得多:

print(foo.to_string())
于 2017-01-05T14:47:17.317 回答