默认情况下pandas在jupyter中截断长表格,需同时设置display.max_rows和display.max_columns为none才能完整显示;还需调整display.max_colwidth控制长文本、display.float_format统一浮点格式,并注意这些设置不影响head()等方法。

默认情况下,pandas 会在 Jupyter Notebook 中截断长表格——只显示前5行、后5行,列数也限制在20以内。这不是数据丢了,只是“不给你看全”,调一下几个 display 选项就能解决。
设置 display.max_rows 和 display.max_columns
这是最常踩坑的地方:只设了行没设列,或反之,结果还是缺内容。
-
pd.set_option('display.max_rows', None):显示所有行(注意:若 DataFrame 超过 1000 行,Jupyter 可能仍会启用滚动容器,但内容完整) -
pd.set_option('display.max_columns', None):显示所有列(避免宽表被砍成...) - 两者必须**同时设置**,否则一个放开、一个卡死,照样显示不全
- 临时生效,重启 kernel 后失效;如需永久生效,写进启动脚本(如
~/.ipython/profile_default/startup/00-pandas-setup.py)
控制单元格内长文本截断:display.max_colwidth
即使列都显示出来了,URL、JSON、日志等长字符串仍会被缩成 ... —— 这是 display.max_colwidth 在起作用。
-
pd.set_option('display.max_colwidth', None):取消单列内容长度限制 - 设为具体数字(如
100)可平衡可读性与空间,避免某列撑爆整个输出区 - 注意:该选项对
object类型列生效,对数值列无影响
避免科学计数法和小数位混乱
浮点数动不动就显示成 1.234568e+06,或者小数位忽长忽短,不是数据问题,是显示格式没对齐。
-
pd.set_option('display.float_format', '{:.2f}'.format):统一用两位小数显示所有浮点列 -
pd.set_option('display.chop_threshold', None):禁用极小值自动转为 0(谨慎使用,可能掩盖数值特征) -
pd.set_option('display.precision', 2)是更通用的精度控制,但仅影响显示,不改变原始值
还原默认设置 & 避免全局污染
改完发现其他 notebook 也受影响?或者想快速回退?别手动记原始值。
- 用
pd.reset_option('display.max_rows')单独恢复某一项 - 批量恢复:
pd.reset_option('all')(慎用,会清掉你自定义的所有display和io选项) - 更安全的做法:在 notebook 开头集中设置,并加注释说明用途,避免后续调试时被遗忘
- 特别注意:
None不等于 “不限制”,它代表“无上限”,但实际渲染仍受浏览器内存和 Jupyter 输出缓冲区限制
真正容易被忽略的点是:这些设置只影响 print(df) 或直接执行 df 的输出;如果用了 df.head() 或 df.sample(),它们自带逻辑,不受 display 选项控制。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











