是否有一种简洁的方法来仅显示当前命令来显示熊猫中的所有行?

MMe*_*cki 9 python pandas

有时我想显示一个熊猫DataFrame中的所有行,但只显示单个命令或代码块。

当然,我可以将“ max_rows”显示选项设置为一个较大的数字,但是之后我必须重复此命令才能恢复到我的首选设置。(我个人最多喜欢12行)。

pd.options.display.max_rows=1000
myDF
pd.options.display.max_rows=12
Run Code Online (Sandbox Code Playgroud)

真烦人

我在文档中读到,如果将命令与“ with”语句结合使用,则可以使用pd.option_context()函数来完成此操作:

with pd.option_context("display.max_rows", 1000): myDF
Run Code Online (Sandbox Code Playgroud)

我无法使它正常工作,(没有输出返回)。但是我认为这样的解决方案对于日常的偶然使用仍然会过于繁琐!

我希望有一些快速的Python方法来覆盖显示选项!
是否存在?我忽略了什么吗?

我喜欢如何通过向.head()函数传递#行的参数来更改.head()函数输出的#行,但是它仍然必须低于“ display.max_rows”设置...

我知道我可以一直保持“ display.max_rows”设置很高,然后在大多数时候都使用.head(12)函数,但是我认为大多数人都同意这会是多么烦人。

我确实知道,可以将熊猫系列的值传递给诸如list()的核心函数,从而查看所有(或大多数?)值。但是,使用DF很难做到。此外,当它不是表格格式时,很难阅读。

第一个问题的解决方案类似,我认为可能存在一种编写自己的函数的方法(放置在启动脚本中),但是我不确定最好的编写方法。

Sto*_*ica 15

这不会显示任何内容,因为它不会返回任何内容:

with pd.option_context("display.max_rows", 1000): myDF
Run Code Online (Sandbox Code Playgroud)

displaywith块内调用应该起作用:

with pd.option_context("display.max_rows", 1000):
    display(myDF)
Run Code Online (Sandbox Code Playgroud)


tgo*_*bch 7

这似乎在 pandas 0.22.0 中按预期工作(仅导入 pandas,不导入 IPython):

import pandas as pd    
with pd.option_context("display.max_rows", 1000): myDF
Run Code Online (Sandbox Code Playgroud)

大概这是因为默认行为是返回 myDF 的 repr。IDE 很可能会覆盖这一点。

如果输入太多,那么当包装在函数中时,直接打印到终端也可以工作:

from __future__ import print_statement  # for python2

def show_rows(df, nrows=1000):
    with pd.option_context("display.max_rows", nrows): print(df)
Run Code Online (Sandbox Code Playgroud)

编辑:调用show_rows(df)默认情况下会将数据帧df的前 1000 行打印到标准输出。


Ami*_*ory 0

您可以编写一个显式调用的函数display

例如,考虑这个函数:

from IPython.display import display

def show_more(df, lines):
    foo = 1
    display(df)
    foo = 2
Run Code Online (Sandbox Code Playgroud)

当我调用该函数时(刚刚尝试过):

>> show_more(df, 1000)
... # <- Shows here the DF
Run Code Online (Sandbox Code Playgroud)

然后它显示数据帧,即使该行foo = 2在 后执行的。因此,您可以设置选项而不是行foo = 1,并在行中取消设置foo = 2。事实上,您可能可以使用问题中的上下文管理器。