python 求和 精度问题_python – pandas中的.sum()方法会产生不一致的结果

我有一个大型DataFrame(大约4e 07行).

在对它进行求和时,无论是在列选择之前还是之后,我得到2个显着不同的结果.

此外,类型从float32更改为float64,即使总计都低于2 ** 31

df[[col1, col2, col3]].sum()

Out[1]:

col1 9.36e+07

col2 1.39e+09

col3 6.37e+08

dtype: float32

df.sum()[[col1, col2, col3]]

Out[2]:

col1 1.21e+08

col2 1.70e+09

col3 7.32e+08

dtype: float64

我显然错过了什么,有没有人有同样的问题?

谢谢你的帮助.

解决方法:

相对于np.float64,np.float32可能会失去精度

np.finfo(np.float32)

finfo(resolution=1e-06, min=-3.4028235e+38, max=3.4028235e+38, dtype=float32)

np.finfo(np.float64)

finfo(resolution=1e-15, min=-1.7976931348623157e+308, max=1.7976931348623157e+308, dtype=float64)

一个人为的例子

df = pd.DataFrame(dict(

x=[-60499999.315, 60500002.685] *

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值