有时我想显示一个熊猫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)
display在with块内调用应该起作用:
with pd.option_context("display.max_rows", 1000):
display(myDF)
Run Code Online (Sandbox Code Playgroud)
这似乎在 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 行打印到标准输出。
您可以编写一个显式调用的函数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。事实上,您可能可以使用问题中的上下文管理器。