У меня есть pandas фрейм данных, где я хотел бы вычесть два значения столбца:
df = pd.DataFrame({"Label":["NoPrecisionLoss"],
"FirstNsae":[1577434369549916003],
"SecondNsae":[1577434369549938679]})
print(df.SecondNsae - df.FirstNsae)
Результат вычитания является правильным 22676
.
Теперь, когда входной фрейм данных получает вторую строку со значением nan
:
df2 = pd.DataFrame({"Label":["PrecisionLoss","NeedsToBeRemoved"],
"FirstNsae":[1577434369549916003,np.nan],
"SecondNsae":[1577434369549938679,66666666666666]})
Это значение nan
неприятно, поэтому мы удалим строку, в которой оно содержится :
df2 = df2[np.isfinite(df2.FirstNsae) & np.isfinite(df2.SecondNsae)]
Давайте преобразуем столбец FirstNsae
обратно в int
(FirstNsae
назначено на float
из-за значения nan
во второй строке):
df2 = df2.astype({"FirstNsae":int}) # this is futile since precision as already been lost
print(df2.SecondNsae - df2.FirstNsae)
Печать разности между двумя столбцами дает 22775
.
Как можно избежать потери точности при построении фреймов данных с очень большими целыми числами при возможном присутствии nan
?
Спасибо!