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 |
在
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) |
。
您可以编写一个显式调用
例如,考虑这个功能:
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 |
号
然后显示数据帧,即使行