停止在 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 中包装单元格