从所有 pandas 数据帧中减去 1.00。获得较大的负值?
Subtract 1.00 from all pandas data-frames. Getting large negative values?
我有五个数据框。我想从所有包含等于 1 或小于 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.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
只是打印出 DataFrames 时看不到它。
我的一个建议是使用 np.isclose
并将这些接近 0 的值设置为零。
df.values[np.isclose(df.values, 0)] = 0
我有五个数据框。我想从所有包含等于 1 或小于 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.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
只是打印出 DataFrames 时看不到它。
我的一个建议是使用 np.isclose
并将这些接近 0 的值设置为零。
df.values[np.isclose(df.values, 0)] = 0