停止在 pandas html 表格输出中包装单元格内容的 jupyter notebook

Posted

技术标签:

【中文标题】停止在 pandas html 表格输出中包装单元格内容的 jupyter notebook【英文标题】:Stop jupyter notebook wrapping cell contents in pandas html table output 【发布时间】:2016-10-09 13:04:22 【问题描述】:

pandas 选项 max_colwidth 控制数据帧的 repr 中将包含多少个字符:

import string, random
import pandas as pd
df = pd.DataFrame([''.join(random.choice(string.ascii_lowercase + ' ') for j in range(1000)) for i in range(4)])

pd.options.display.max_colwidth = 10
print(df)

产量

           0
0  lmftge...
1  pqttqb...
2  wi wgy...
3  ow dip...

pd.options.display.max_colwidth = 30
print(df)

产量

                               0
0  lmftgenioerszvgzfaxorzciow...
1  pqttqbqqe pykgguxnjsspbcti...
2  wi wgybtgcbxkobrwnaxpxwsjc...
3  ow dippaiamvvcofvousieckko...

您可以设置pd.options.display.max_colwidth = 0 以完全取消限制。到目前为止还不错!

但如果数据框在笔记本内以 html 格式呈现,则无论此设置如何,笔记本都会将列的表格换行到显示的宽度:

有什么办法可以避免这种情况,即,让 HTML 表格列呈现为所需的宽度,以将每一行放在一行上?

更一般地说,是否可以独立于 pandas 输出中的字符数来控制笔记本输出中 HTML 表格列的宽度?

【问题讨论】:

您可以尝试按照nbconvert documentation 中的说明编写自己的子模板。我对模板不够熟悉,无法编写答案,但您会使用here is the parent template。 我添加了一些标签,以防有人关注这些标签可以提供帮助...... 看看人们使用自定义 CSS 的方法。但是请注意,对于所有 Jupyter HTML 输出来说,这是一刀切的,因此尺寸必须非常小才能在不换行的情况下呈现 500?-char 行。所以,简短的回答是我怀疑这是否实用。 【参考方案1】:

以 Ben 的回答为基础,但无需进入自定义 css 文件,这些文件对 juptyter 实验室的工作方式不同。

只需将它放在一个单元格中并运行它:

%%html
<style>
.dataframe td 
    white-space: nowrap;

</style>

【讨论】:

【参考方案2】:

如果你创建一个文件:~/.jupyter/custom$ atom custom.css 然后把它放进去:

.dataframe td 
    white-space: nowrap;

然后它会强制单元格显示为一行,但是你会得到一个滚动表。

如果你想让它不滚动,那么设置:

div.output_subarea 
    overflow-x: inherit;

然后它将尽可能宽:

它不是超级漂亮,但我相信你可以根据需要整理它。

我发现this 很有帮助。您还需要在首次创建 css 文件后重新启动 notebook 以使其注册,但从那时起您只需刷新页面即可看到对 css 的更改生效。

This was the notebook that I was testing on.

【讨论】:

“实际问题”的答案确实对我有用。如果您想摆脱“相反”问题的答案(同时保留~/.jupyter/custom/custom.css 的更正路径),那么我很乐意将其标记为解决方案。 $ atom 中间的~/.jupyter/custom$ atom custom.css 是错字吗?

以上是关于停止在 pandas html 表格输出中包装单元格内容的 jupyter notebook的主要内容,如果未能解决你的问题,请参考以下文章

Pandas read_html 返回原始 HTML 内容 [对于某些行/单元格/等]

在 Python Pandas DataFrame 或 Jupyter Notebooks 中包装列名

在表格报告实验室中包装文本?

在 UICollectionview iOS 8 中包装单元格

Pandas HTML 输出条件格式 - 如果值在范围内,则突出显示单元格

pandas:带有条件格式的 HTML 输出