1.110223e-16
не большое, отрицательное значение.Это на самом деле очень малая положительная ценность.e-16
представляет крошечный показатель.
1e-2
# 0.01
1e-4
# 0.0001
print('{:.16f}'.format(1e-16))
# 0.0000000000000001
Полагаю, вы столкнулись с несоответствиями с плавающей запятой .Например, единицы в ваших данных могут на самом деле иметь крошечные дроби с плавающей точкой:
1 + 1.110223e-16
# 1.0
Просто вы не сможете увидеть это при распечатке ваших DataFrames.
Одно из предложений, которое я бы предложил, это использовать np.isclose
и установить эти значения около 0 на ноль.
df.values[np.isclose(df.values, 0)] = 0