问题:熊猫:设置编号。最大行数
我在查看以下内容时遇到问题DataFrame
:
n = 100
foo = DataFrame(index=range(n))
foo['floats'] = np.random.randn(n)
foo
问题是它不会在ipython笔记本中默认情况下不打印所有行,但是我必须切片才能查看结果行。甚至以下选项也不会更改输出:
pd.set_option('display.max_rows', 500)
有谁知道如何显示整个数组?
回答 0
设置display.max_rows
:
pd.set_option('display.max_rows', 500)
对于较早版本的熊猫(<= 0.11.0),您需要同时更改display.height
和display.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')
回答 1
就个人而言,我喜欢直接使用赋值语句设置选项,因为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
。
回答 2
在此注释和此答案中已经指出了这一点,但是我将尝试对该问题给出更直接的答案:
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块时,这些选项会还原为先前的设置。
回答 3
正如@hanleyhansen在评论中指出的那样,从0.18.1版本开始,该display.height
选项已被弃用,并说“使用display.max_rows
代替”。因此,您只需要像这样配置它:
pd.set_option('display.max_rows', 500)
现在已弃用的display.height,display.width仅是一个格式选项,无法控制摘要的触发,类似于<0.11.0。
回答 4
pd.set_option('display.max_rows', 500)
df
不工作的Jupyter!
而是使用:
pd.set_option('display.max_rows', 500)
df.head(500)