Python 是否有一种简洁的方法仅显示当前命令的所有行?
有时我想显示数据帧中的所有行,但只显示单个命令或代码块 当然,我可以将“max_rows”显示选项设置为一个较大的数字,但随后我必须重复该命令才能恢复到首选设置。(我个人最多喜欢12排) 真烦人 我在文档中读到,如果我将命令与“with”语句结合使用,我可以使用pd.option_context()函数来完成这一任务:Python 是否有一种简洁的方法仅显示当前命令的所有行?,python,pandas,Python,Pandas,有时我想显示数据帧中的所有行,但只显示单个命令或代码块 当然,我可以将“max_rows”显示选项设置为一个较大的数字,但随后我必须重复该命令才能恢复到首选设置。(我个人最多喜欢12排) 真烦人 我在文档中读到,如果我将命令与“with”语句结合使用,我可以使用pd.option_context()函数来完成这一任务: with pd.option_context("display.max_rows", 1000): myDF 我无法让它工作(没有返回输出)。 但我认为这样的解决方案对于日常的
with pd.option_context("display.max_rows", 1000): myDF
我无法让它工作(没有返回输出)。
但我认为这样的解决方案对于日常的偶然使用来说仍然是太多的打字
我希望有一些快速的pythonic方法来覆盖显示选项有人存在吗?我忽略了什么吗 我喜欢通过向.head()函数传递行数的参数来改变其输出的行数,但它仍然必须低于“display.max_rows”设置 我知道我可以一直将“display.max_rows”设置得很高,然后在大多数情况下使用.head(12)函数,但我想大多数人都会同意这有多烦人 我确实知道,通过将pandas系列中的值传递给核心函数(如list()),可以查看该系列中的所有(或大部分?)值。但这对于DF来说是很棘手的。此外,如果不是表格格式,很难阅读
与之类似,我想可能有一种方法可以编写我自己的函数(放在启动脚本中),但我不确定最好的编写方法。您可以编写一个显式调用
例如,考虑这个函数:
from IPython.display import display
def show_more(df, lines):
foo = 1
display(df)
foo = 2
from __future__ import print_statement # for python2
def show_rows(df, nrows=1000):
with pd.option_context("display.max_rows", nrows): print(df)
当我调用该函数时(刚刚尝试):
>显示更多信息(df,1000)
... # 这不会显示任何内容,因为它不会返回任何内容:
with pd.option_context("display.max_rows", 1000): myDF
使用
块调用中的显示
,应该可以:
with pd.option_context("display.max_rows", 1000):
display(myDF)
这似乎与pandas 0.22.0中的预期一样有效(仅导入pandas,不导入IPython):
大概是因为默认行为是返回myDF的repr。IDE很可能会覆盖这一点
如果输入太多,那么当包装在函数中时,直接打印到终端也会起作用:
from IPython.display import display
def show_more(df, lines):
foo = 1
display(df)
foo = 2
from __future__ import print_statement # for python2
def show_rows(df, nrows=1000):
with pd.option_context("display.max_rows", nrows): print(df)
编辑:默认情况下,调用show_rows(df)将数据帧的前1000行打印为标准输出。您可以使用以下辅助功能打印完整数据帧,并在打印后将max_rows
设置为正常
def print_full(df):
import pandas as pd
pd.set_option('display.max_rows', len(df))
print(df)
pd.reset_option('display.max_rows')
一个用于强制显示所有行的行(以jupyter为单位):
导入IPython.display
IPython.display.HTML(df.to_HTML())
df.show(记录数)
例如:
df=spark.read.format('csv').load('hdfs://localhost:9000/user/test/region_location,header='false',nullValue='null',schema=transchema)
测向显示(50)
在结果数据框中显示所需行数的最佳方法:
对于行:
pd.set_option('display.max_rows',100)
对于列:
Use display.max_columns option
pd.set_option('display.max_columns',100)
我经常发现通过df.to_clipboard()使用Excel查看大型数据帧,然后粘贴到Excel中更容易。根据数据框的复杂性,您可能需要使用df.to_excel。我不同意@Alexander。当DF太大而无法在笔记本中查看时,通常是因为我没有考虑正确的聚合。一张图表也能帮上忙。我给了N=1000来表示一个相当大但不是荒谬的大的东西,但也许我应该用更像100的东西。我不一定要查看“所有”行,因为如果N很大,显然我不想这样做。但我经常希望看到的不仅仅是12行,在我测试不同命令时可以帮助我。在许多情况下,我很乐意在12到60行之间快速跳转,但我也希望在DF不是很大的情况下,可以看到所有行。有时,这与正确的聚合无关,或者不可能做到这一点。这个问题主要是关于需要一些方便的方法来评估不同命令变体的结果(例如,评估聚合数据的不同尝试是如何工作的!!!)看到了吗!我打算再玩一玩,但它看起来很有希望!谢谢我昨天一整天都在使用这个函数,它帮了我很大的忙。注意:我最后稍微调整了一下这个函数,以便也可以处理列,以便在最后重置时能够适应不同的默认设置,并拥有自己的默认设置(当我不传递任何参数时)。另外,我从名称中删除了下划线,因为这会减慢键入.def showmore的速度(df,lines=None,cols=None):如果行为无:如果列为无:行为50如果列为无:列为20 oldrows=pd.options.display.max\u rows oldcols=pd.options.display.max\u columns pd.options.display.max\u rows=lines pd.options.display.max\u columns=cols display(df)pd.options.display.max_rows=oldrows pd.options.display.max_columns=oldcolsaagh,对不起,我是S.O.的新手,我只是在想办法,不确定最好的地方是把我的经过调整的解决方案放在哪里!似乎注释不是最好的地方,因为我丢失了代码块格式。这不会打印任何东西。你只需要调用函数-edited来显示上面的内容。简单简洁!使用Pandas 1.2.0:AttributeError:“DataFrame”对象没有属性“show”
检查列,如果有,则删除所有空白。df.column不确定这与任何事情有什么关系,即使any([c.isspace()表示d中的d,df.columns表示d中的c])==False
,数据帧仍然没有属性show
。
Use display.max_columns option
pd.set_option('display.max_columns',100)