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

已尝试常规方法仍无效:如何设置Pandas默认非科学计数法显示浮点数?

解决Numpy数组默认科学计数法显示的问题

你碰到的问题其实很好理解:你设置的pd.options.display.float_format只对**Pandas的对象(比如Series、DataFrame)**的显示生效,但.values返回的是Numpy的ndarray数组——Numpy有自己独立的打印配置规则,完全不受Pandas的设置影响,所以之前的操作才没起作用。

下面给你几个实用的解决方案:

方案1:全局修改Numpy的打印规则(一劳永逸)

如果你希望所有Numpy数组都默认用非科学计数法展示,可以直接设置Numpy的全局打印选项:

import numpy as np
# suppress=True 强制禁用科学计数法,precision控制小数位数
np.set_printoptions(suppress=True, precision=2)

设置完之后,再运行test_df.median().values,输出就会变成:

array([-120.00,  34.00,  29.00, 2100.00,  440.00, 1200.00,  410.00,
         3.50, 180000.00,   3.00])

如果想让整数显示成不带小数的形式,可以把precision设为0,或者用更灵活的格式化逻辑。

方案2:针对单个数组自定义格式化(不影响全局)

如果你不想修改全局设置,只想处理当前这个数组,可以用Numpy的array2string方法自定义格式化规则:

import numpy as np
result_array = test_df.median().values
# 自定义格式化:整数显示为整数,非整数保留两位小数
formatted_str = np.array2string(
    result_array,
    formatter={'float_kind': lambda x: f'{int(x)}' if x.is_integer() else f'{x:.2f}'}
)
print(formatted_str)

这样输出会更友好:

[-120 34 29 2100 440 1200 410 3.5 180000 3]

方案3:直接使用Pandas对象(避免转Numpy数组)

其实你完全可以不用转成Numpy数组——test_df.median()返回的是Pandas Series,直接打印它就会遵守你之前设置的float_format规则:

pd.options.display.float_format = '{:.2f}'.format
print(test_df.median())

这样输出就是符合你预期的非科学计数格式啦。

内容的提问来源于stack exchange,提问作者Onkar N Mahajan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:18:04