You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame打印时最后一列precision设置不生效的解决方法

Pandas DataFrame打印时最后一列未按指定精度显示的解决办法

问题描述

设置display.precision=0后,DataFrame的前两列gas和prev正常显示为整数,但最后一列delta%却以科学计数法展示,未按预期输出整数格式。

相关代码片段

print(dfy)
print(dfy.dtypes)
with pd.option_context('display.precision', 0):
    print(dfy)

代码执行输出

gas         prev      delta%
2023-10-01   818.851398          NaN         NaN
2023-11-01  2009.784005  1755.768035   14.467513
2023-12-01  2304.134123  2479.160200   -7.059894
2024-01-01  2647.367761  2524.686911    4.859250
2024-02-01  1685.694664  2070.363903  -18.579789
2024-03-01  1588.714377  1840.684792  -13.688950
2024-04-01  1376.973210  1385.102980   -0.586943
2024-05-01   605.798978   706.870375  -14.298434
2024-06-01   117.488287   155.409729  -24.400945
2024-07-01   163.644399   133.852727   22.257053
2024-08-01   129.027315   121.264696    6.401384
2024-09-01   625.730027   198.051683  215.942797
gas       float64
prev      float64
delta%    float64
dtype: object
             gas  prev  delta%
2023-10-01   819   NaN     NaN
2023-11-01  2010  1756   1e+01
2023-12-01  2304  2479  -7e+00
2024-01-01  2647  2525   5e+00
2024-02-01  1686  2070  -2e+01
2024-03-01  1589  1841  -1e+01
2024-04-01  1377  1385  -6e-01
2024-05-01   606   707  -1e+01
2024-06-01   117   155  -2e+01
2024-07-01   164   134   2e+01
2024-08-01   129   121   6e+00
2024-09-01   626   198   2e+02

解决办法

问题根源是Pandas会自动对极小或极大数值启用科学计数法,仅设置display.precision无法覆盖该行为,以下是几种可行方案:

  • 方案1:全局指定浮点数显示格式
    在option_context中同时设置display.float_format,强制所有浮点数以整数形式展示:

    with pd.option_context('display.precision', 0, 'display.float_format', '{:.0f}'.format):
        print(dfy)
    
  • 方案2:单独格式化目标列
    如果只需修改delta%列,可直接对该列应用格式转换:

    # 转换列值格式(不修改原数据类型)
    dfy_formatted = dfy.copy()
    dfy_formatted['delta%'] = dfy_formatted['delta%'].apply(lambda x: '{:.0f}'.format(x) if pd.notna(x) else x)
    print(dfy_formatted)
    
    # 或使用style格式化打印(不修改原数据)
    print(dfy.style.format({'gas': '{:.0f}', 'prev': '{:.0f}', 'delta%': '{:.0f}'}))
    
  • 方案3:调整科学计数法触发阈值
    通过设置display.float_format配合display.precision,或修改display.max_colwidth等参数,但最直接有效的仍是指定格式字符串。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:35:56