从所有熊猫数据框中减去1.00。越来越大的负值?

时间:2019-01-20 01:51:04

标签: python python-3.x pandas negative-number

我有五个数据帧。我想从包含等于或小于1的值的所有数据框中减去1.00。

DT   D1   D2
0   1.0  1.0


RE   E1   E2   E3
0   1.0  1.0  0.8


FE   F1   F2
0   1.0  0.63


SE   S1   S2
0   1.0  1.0


DT   D1             D2          
RE   E1   E2   E3   E1   E2   E3
0   1.0  1.0  1.0  1.0  0.45  1.0


DT   D1                            D2                         
RE   E1        E2        E3        E1        E2        E3     
FE   F1   F2   F1   F2   F1   F2   F1   F2   F1   F2   F1   F2
0   1.0  0.0  0.0  1.0  1.0  1.0  1.0  1.0  1.0  0.0  1.0  1.0

我尝试了所有数据帧的跟踪,但是,在某些情况下,我得到了较大的负值,例如1.110223e-16,-2.220446e-16。如何避免这些值?

df = 1.00 - df

1 个答案:

答案 0 :(得分:3)

1.110223e-16不是很大的负值。实际上,这是一个非常小的正值。 e-16代表一个很小的指数。

1e-2
# 0.01

1e-4
# 0.0001

print('{:.16f}'.format(1e-16))
# 0.0000000000000001

我的猜测是您遇到了floating point inconsistencies。例如,数据中的1可能实际上具有很小的浮点分数:

1 + 1.110223e-16
# 1.0

只是在打印出DataFrame时看不到它。


我的一个建议是使用np.isclose并将这些接近0的值设置为零。

df.values[np.isclose(df.values, 0)] = 0