IPython Notebook Pandas 最大可允许的列数

24

我有一个简单的CSV文件,它有十列!

当我在笔记本中设置以下选项并打印我的CSV文件(它在pandas数据框中),它并没有从左到右打印所有列,而是将前两列打印在上方,接下来的两列打印在下方,依此类推。

我使用了这个选项,为什么它没有起作用?

pd.option_context("display.max_rows",1,"display.max_columns",100)

即使这样似乎也不起作用:

pandas.set_option('display.max_columns', None)
3个回答

40

我假设你想在笔记本中显示你的数据,那么以下选项对我来说都很好用(IPython 2.3):

import pandas as pd
from IPython.display import display
data = pd.read_csv('yourdata.txt')

直接设置选项

pd.options.display.max_columns = None
display(data)

或者,您也可以使用您展示的 set_option 方法,这样也可以正常工作。

pd.set_option('display.max_columns', None)
display(data)
如果您不想为整个脚本设置这些选项,请使用上下文管理器。
with pd.option_context('display.max_columns', None):
    display(data)

如果这不起作用,您可以提供一个最小化的示例来重现您的问题。


我正在使用Python 3.4。 - yoshiserry
我尝试了Python 2.7和3.4版本,两者都按预期工作。 - Jakob
谢谢Jakob!它起作用了。我从未见过“display(data)”这部分,它是做什么的? - yoshiserry
display(data)类似于print data,但使用IPython丰富的显示系统。如果您只调用数据,则会将数据表示作为输出(请注意OUT[x]),这对前两个选项很有效,但上下文管理器需要显示调用。 - Jakob
默认情况下,display data是否显示所有记录?而head仅显示默认的5条或.head(20)条记录。 - yoshiserry
基本上,display 显示“所有”可用的内容,但正如您在问题中展示的那样,pandas 有一些默认设置来裁剪数据框。您还可以查看 qgrid,它是显示 pandas 表格的不错补充。 - Jakob

1
你可以通过请求pandas返回HTML标记来显示所有数据,然后让IPython呈现HTML表格。
import pandas as pd
from IPython.display import HTML
data = pd.read_csv('yourdata.csv')
HTML(data.to_html())

使用IPython 3.0.0和Python 3.4,我发现如@Jakob所述的display(data)将呈现为一个带有上下和左右滚动条的表格,但是表格仍然比单元格更宽,某些列向右侧超出屏幕。要查看所有数据,必须折叠单元格-这会添加滚动条。因此,您需要在滚动框中进行滚动,这不是理想的,因为您必须在双重滚动条之间切换焦点才能完全浏览数据。

使用HTML方法,您可以将巨大的表格按原样渲染,而不使用任何滚动条。然后,可以将此单元格折叠以仅显示单个垂直和水平条,这更加用户友好。

使用HTML的注意事项是表格需要较长时间才能呈现。我只使用了一个大约150x50的矩阵,速度差异是明显的,但并不影响使用。如果您有一个巨大的表格,请勿使用此方法一次性显示整个表格。也就是说,如果您确实有一个巨大的表格,那么无论如何尝试都会是个坏主意。


0

我在谷歌搜索中找到了这个问题,它是其中的一个热门结果。在Jupyter Lab中,

pandas.set_option("display.max_columns", None)

现在看起来运行良好 - 我的示例有32列,以前被截断了,现在不再截断。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接