21

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 表格列呈现得尽可能宽,以便将每一行放在一行上?

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

4

3 回答 3

14

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

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

%%html
<style>
.dataframe td {
    white-space: nowrap;
}
</style>
于 2019-09-06T21:14:03.560 回答
7

如果您制作一个文件:~/.jupyter/custom$ atom custom.css然后将其放入其中:

.dataframe td {
    white-space: nowrap;
}

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

在此处输入图像描述

如果您希望它不滚动,请设置:

div.output_subarea {
    overflow-x: inherit;
}

然后它将尽可能宽:

在此处输入图像描述

它不是超级漂亮,但我相信如果需要你可以整理一下。

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

这是我正在测试的笔记本

于 2017-02-07T23:19:05.030 回答
0

如果您更喜欢使用 1 行代码,或者如果您需要在笔记本的不同部分使用不同的格式,另一种选择是使用 Pandas Styler:

dfs = df.style.set_table_styles([dict(selector="td", props=[('white-space', 'nowrap')])])
display(dfs)

它是基于 CSS 的,所以如果在笔记本中间你想回到以前的格式,你可以写:

dfs = df.style.set_table_styles([dict(selector="td", props=[('overflow', 'hidden'),  
                      ('text-overflow', 'ellipsis'), ('max-width', '120px')])])
于 2022-02-27T12:41:47.673 回答