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




