关于python:是否有一种简洁的方法来显示当前命令的pandas中的所有行?

Is there a concise way to show all rows in pandas for just the current command?

有时,我希望显示熊猫数据帧中的所有行,但只显示单个命令或代码块。

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

1
2
3
pd.options.display.max_rows=1000
myDF
pd.options.display.max_rows=12

这很烦人。

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

1
with pd.option_context("display.max_rows", 1000): myDF

我不能让它工作(没有输出返回)。但我认为这样的解决方案对于日常的偶然使用仍然是太多的打字了!

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

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

我知道我可以一直将"display.max_rows"设置得很高,然后在大多数时间内使用a.head(12)功能,但我认为大多数人都会同意这样做有多烦人。

我确实知道一个人可以看到全部(或大部分?)将pandas系列中的值传递给核心函数,如list()。但这对于df来说很难做到。此外,如果不是表格格式,就很难阅读。

与第一个问题的解决方案类似,我想可能有一种方法可以编写自己的函数(放在启动脚本中),但我不确定编写它的最佳方法。


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

1
with pd.option_context("display.max_rows", 1000): myDF

with块内调用display应该可以工作:

1
2
with pd.option_context("display.max_rows", 1000):
    display(myDF)


这似乎在熊猫0.22.0中起到了预期的作用(只进口熊猫,不进口ipython):

1
2
import pandas as pd    
with pd.option_context("display.max_rows", 1000): myDF

这可能是因为默认行为是返回mydf的repr。IDES很可能会忽略这一点。

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

1
2
3
4
from __future__ import print_statement  # for python2

def show_rows(df, nrows=1000):
    with pd.option_context("display.max_rows", nrows): print(df)


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

例如,考虑这个功能:

1
2
3
4
5
6
from IPython.display import display

def show_more(df, lines):
    foo = 1
    display(df)
    foo = 2

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

1
2
>> show_more(df, 1000)
... # <- Shows here the DF

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