熊猫:设置编号。最大行数


138

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

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

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

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

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


当我在默认(即没有特殊配置配置文件)笔记本中运行您的代码时,我得到一个漂亮的打印表,该表可以滚动显示所有值。仅供参考,我的熊猫。__version__ = 0.9.1(不确定是否重要)
BubbleGuppies 2013年

我的意思是普通外壳,而不是ipython
Ryan Saxe,

我觉得这可能是0.11+中的错误...
Andy Hayden

嗨,安迪。韦斯是否已经证实了这一点?我在哪里可以提交此错误?有解决方法吗?
安迪

我只是将其提交到这里,我知道DataFrame repr在0.11中有最后一刻的更改,因此我将这些错误报告抄录了。将让您知道重新解决方法。
安迪·海登

Answers:


233

设置display.max_rows

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

对于较早版本的熊猫(<= 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')


6
+1为pd.describe_option('display'),我不知道所有选项
nom-mon-ir

41
现在不建议使用高度,因此display.max_rows选项已足够。
hanleyhansen 2014年

9
对于仅查看可接受答案的任何人:使用with pd.option_context('display.height', 500, 'display.max_rows', 500):只能临时设置这些答案。
BallpointBen

我应该纠正或给出实现此目标的最佳方法。使用无,并且不限制为500。#临时显示所有带有pd的行和列。在包含代码的单元格中,因此无需在其他单元格中进行重置。
MGB.py

35

就个人而言,我喜欢直接使用赋值语句设置选项,因为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_option和的需求也更少set_option


4
with pd.option_context是这些答案中最干净的方法;副作用最少。
ijoseph '18年

10

此注释此答案中已经指出了一点,但是我将尝试对该问题给出更直接的答案:

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 0.13.1(pandas 0.13.1发行说明)开始,pandas.option_context可用。根据

[it]允许您执行带有一组选项的代码块,当您退出with块时,这些选项会还原为先前的设置。


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。



3

正如这个答案类似的问题,不存在需要破解的设置。编写起来要简单得多:

print(foo.to_string())

1
您不应该将其转换为字符串。这不是安迪要求的。
simtim

1
@simtim Andy问如何“显示整个数组”。这将做到这一点,是很多比接受的答案简单。
Ninjakannon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.