在pandas html表输出中停止jupyter笔记本包装单元格内容

Mik*_*ike 12 html jinja2 pandas jupyter-notebook nbconvert

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)
Run Code Online (Sandbox Code Playgroud)

产量

           0
0  lmftge...
1  pqttqb...
2  wi wgy...
3  ow dip...
Run Code Online (Sandbox Code Playgroud)

pd.options.display.max_colwidth = 30
print(df)
Run Code Online (Sandbox Code Playgroud)

产量

                               0
0  lmftgenioerszvgzfaxorzciow...
1  pqttqbqqe pykgguxnjsspbcti...
2  wi wgybtgcbxkobrwnaxpxwsjc...
3  ow dippaiamvvcofvousieckko...
Run Code Online (Sandbox Code Playgroud)

您可以设置pd.options.display.max_colwidth = 0完全删除限制.好到目前为止!

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

包裹的桌子

有没有办法避免这种情况,即将HTML表格列渲染为适合单行上每行所需的宽度?

更一般地说,是否可以控制笔记本输出中HTML表格列的宽度,而与pandas输出中的字符数无关?

小智 14

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

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

%%html
<style>
.dataframe td {
    white-space: nowrap;
}
</style>
Run Code Online (Sandbox Code Playgroud)


Ben*_*Ben 6

如果你创建一个文件:~/.jupyter/custom$ atom custom.css然后将其放入其中:

.dataframe td {
    white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)

然后它将强制单元格显示为一行,但随后您将获得一个滚动表格.

在此输入图像描述

如果您不想滚动,请设置:

div.output_subarea {
    overflow-x: inherit;
}
Run Code Online (Sandbox Code Playgroud)

然后它会像它需要的那样宽:

在此输入图像描述

它不是非常漂亮,但我确信如果需要你可以整理它.

我发现非常有帮助.在首次创建要注册的css文件后,您还需要重新启动笔记本,但从那时起,您只需刷新页面即可查看对css生效的更改.

这是我正在测试的笔记本.