在带有“折叠”(包装)的jupyter笔记本中显示“长”熊猫数据框?

Posted

技术标签:

【中文标题】在带有“折叠”(包装)的jupyter笔记本中显示“长”熊猫数据框?【英文标题】:Display "long" pandas dataframe in jupyter notebook with "foldover" (wrapping)? 【发布时间】:2017-02-17 17:30:45 【问题描述】:

假设我有一个包含许多列的 pandas 数据框:

我可以通过向左/向右滚动来查看所有列。但是,这有点不方便,我想知道是否有一种优雅的方式来显示带有“折叠”的表格:

为了生成上述内容,我手动将数据帧分成块并显示每个块(这就是为什么间距/等不完美的原因)。

我想知道是否有办法更干净地执行上述操作,可能是通过更改 pandas 或 jupyter 设置?

【问题讨论】:

您的意思是“宽”而不是“长”数据框,如果是,您可以编辑标题吗?另外我从来没有听说过“折叠”这个词,我认为“包装”对大多数人来说都很熟悉。 【参考方案1】:

试试这个:

In [135]: df = pd.DataFrame(np.random.rand(3, 30), columns=list(range(30)))

In [136]: pd.options.display.expand_frame_repr=True

In [137]: pd.options.display.max_columns = None

In [138]: pd.options.display.width = 80

In [139]: df
Out[139]:
         0         1         2         3         4         5         6   \
0  0.072370  0.388609  0.112033  0.829140  0.700152  0.645331  0.063483
1  0.890765  0.330274  0.900561  0.128318  0.056443  0.239560  0.568522
2  0.295088  0.101399  0.417066  0.657503  0.872717  0.153140  0.909876

         7         8         9         10        11        12        13  \
0  0.497130  0.852824  0.778126  0.710167  0.526406  0.416188  0.154483
1  0.451316  0.409711  0.352989  0.810885  0.540569  0.999328  0.144429
2  0.442140  0.892209  0.150371  0.337189  0.584538  0.152138  0.278306

         14        15        16        17        18        19        20  \
0  0.520901  0.857807  0.969782  0.577220  0.016009  0.809139  0.231900
1  0.561181  0.446312  0.468740  0.076465  0.383884  0.850491  0.815509
2  0.147742  0.957585  0.010312  0.021724  0.572048  0.952412  0.033100

         21        22        23        24        25        26        27  \
0  0.656393  0.823157  0.507222  0.889953  0.076415  0.820150  0.441099
1  0.919607  0.942032  0.586774  0.469604  0.596542  0.156348  0.099294
2  0.978045  0.537873  0.283019  0.582568  0.012389  0.943704  0.028346

         28        29
0  0.921219  0.569421
1  0.016056  0.298474
2  0.061831  0.488659

【讨论】:

【参考方案2】:

除了像你一样设置最大列数之外,我还在导入display

import pandas as pd
pd.set_option('display.max_columns', None)

from IPython.display import display

创建一个框架,然后创建一个简单的 for 循环,每 30 列显示一次

df = pd.DataFrame([range(200)])

cols = df.shape[1]

for i in range(0,cols,30):   
    display(df.iloc[:,i:i+30])

编辑:忘记添加输出图片

【讨论】:

以上是关于在带有“折叠”(包装)的jupyter笔记本中显示“长”熊猫数据框?的主要内容,如果未能解决你的问题,请参考以下文章

jupyter笔记本中的spark vs pandas数据框(带有大列)head(n)

使用带有R内核的jupyter笔记本,如何通过引用来抑制打印结果更新data.table?

带有熊猫和 Jupyter 笔记本的交互式箱线图

如何在 Jupyter 笔记本中显示欧洲地图?

matplotlib:figimage 未显示在 Jupyter 笔记本中

我在主页上有很多Jupyter笔记本,当Jupyter启动时会显示。我该如何清洁其中一些?