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

时间:2016-06-09 03:49:11

标签: html pandas jinja2 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)

产量

           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格式呈现,则无论此设置如何,笔记本都会将列的表格包装到显示的宽度:

wrapped table

有没有办法避免这种情况,即将HTML表格列渲染为必要宽度以使每行适合一行?

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

2 个答案:

答案 0 :(得分:6)

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

.dataframe td {
    white-space: nowrap;
}

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

enter image description here

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

div.output_subarea {
    overflow-x: inherit;
}

然后它会变得如此宽阔:

enter image description here

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

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

This was the notebook that I was testing on

答案 1 :(得分:2)

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

只需将其放在单元格中并运行它即可:

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