停止 jupyter notebook 在 pandas html table 输出中包装单元格内容
Stop jupyter notebook wrapping cell contents in pandas html table output
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 呈现,笔记本会将列的 table 换行到显示宽度,无论此设置如何:
有什么方法可以避免这种情况,即让 HTML table 列呈现得尽可能宽以使每一行都在一行上?
更一般地说,是否可以独立于 pandas 输出中的字符数来控制笔记本输出中 HTML table 列的宽度?
如果你创建一个文件:~/.jupyter/custom$ atom custom.css
然后把它放进去:
.dataframe td {
white-space: nowrap;
}
然后它会强制单元格显示为一行,但随后会出现滚动 table。
如果你想让它不滚动,那么设置:
div.output_subarea {
overflow-x: inherit;
}
然后它将尽可能宽:
它不是很漂亮,但我相信如果需要你可以整理它。
我发现 很有帮助。您还需要在首次创建 css 文件后重新启动笔记本以进行注册,但从那时起您只需刷新页面即可看到对 css 的更改生效。
以 Ben 的回答为基础,但无需进入自定义 css 文件,这些文件对于 juptyter lab 的工作方式不同。
只需将其放入一个单元格中,然后 运行 它:
%%html
<style>
.dataframe td {
white-space: nowrap;
}
</style>
如果您更喜欢用一行代码来完成,或者如果您需要在笔记本的不同部分使用不同的格式,另一种选择是使用 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')])])
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 呈现,笔记本会将列的 table 换行到显示宽度,无论此设置如何:
有什么方法可以避免这种情况,即让 HTML table 列呈现得尽可能宽以使每一行都在一行上?
更一般地说,是否可以独立于 pandas 输出中的字符数来控制笔记本输出中 HTML table 列的宽度?
如果你创建一个文件:~/.jupyter/custom$ atom custom.css
然后把它放进去:
.dataframe td {
white-space: nowrap;
}
然后它会强制单元格显示为一行,但随后会出现滚动 table。
如果你想让它不滚动,那么设置:
div.output_subarea {
overflow-x: inherit;
}
然后它将尽可能宽:
它不是很漂亮,但我相信如果需要你可以整理它。
我发现
以 Ben 的回答为基础,但无需进入自定义 css 文件,这些文件对于 juptyter lab 的工作方式不同。
只需将其放入一个单元格中,然后 运行 它:
%%html
<style>
.dataframe td {
white-space: nowrap;
}
</style>
如果您更喜欢用一行代码来完成,或者如果您需要在笔记本的不同部分使用不同的格式,另一种选择是使用 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')])])