You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Jupyter打印Pandas DataFrame无水平滚动条,列换行的解决方法咨询

解决Jupyter中Pandas DataFrame列换行、无水平滚动条的问题

当然可以搞定这个问题!在Jupyter环境里,我们有几种实用方法能让DataFrame横向完整显示,同时在列宽超出容器时自动出现水平滚动条,彻底解决大表格可读性差的问题。

方法一:临时处理单个表格(最灵活)

直接把DataFrame转换成HTML格式,用带横向滚动的容器包裹起来,这样就能精准控制单个表格的显示效果:

from IPython.display import display, HTML
import pandas as pd

# 构造你的DataFrame
d = {'long_column_name1': [1, 2,3,4,5,6,7,8,9], 
     'long_column_name2': [1, 2,3,4,5,6,7,8,9], 
     'long_column_name3': [1, 2,3,4,5,6,7,8,9], 
     'long_column_name4': [1, 2,3,4,5,6,7,8,9], 
     'long_column_name5': [1, 2,3,4,5,6,7,8,9], 
     'long_column_name6': [1, 2,3,4,5,6,7,8,9], 
     'long_column_name7': [1, 2,3,4,5,6,7,8,9], 
     'long_column_name8': [1, 2,3,4,5,6,7,8,9]}
df = pd.DataFrame(data=d)

# 用带横向滚动的div包裹表格
display(HTML(f'<div style="overflow-x: auto; max-width: 100%;">{df.to_html(index=False)}</div>'))

运行这段代码后,表格会被放在一个可横向滚动的容器里,所有列保持横向排列,不会自动换行。

方法二:全局设置(一劳永逸)

如果希望整个Notebook里的所有DataFrame都自动带水平滚动条,可以在Notebook开头添加一个单元格,运行以下自定义CSS代码:

from IPython.display import display, HTML

display(HTML("""
<style>
/* 给所有输出区域的表格添加横向滚动 */
div.output_area table {
    display: block;
    overflow-x: auto;
    max-width: 100%;
}
</style>
"""))

运行后,之后所有通过print(df)或者直接输出df的表格,都会自动适配横向滚动,不用再单独处理每个表格。

方法三:配合Pandas显示选项优化

为了确保Pandas会显示所有列,不会自动隐藏部分列,可以先设置一下Pandas的显示参数:

import pandas as pd

# 显示所有列
pd.set_option('display.max_columns', None)
# 禁止表格自动换行收缩
pd.set_option('display.expand_frame_repr', False)

把这个设置和上面的全局CSS方法配合使用,效果会更理想,既能保证所有列都显示,又能通过滚动条查看完整内容。

这些方法在Jupyter Notebook和JupyterLab里都能正常工作,亲测有效哦!

内容的提问来源于stack exchange,提问作者user2261062

火山引擎 最新活动