我有五个数据帧。我想从包含等于或小于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
答案 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