У меня есть кадр данных Pandas с 4 строками, и один из столбцов (с именем limit
) содержит значения с плавающей запятой, где любые нули должны быть заменены на 9999999999 (9,9999999999 миллиардов). В столбце указан тип данных float32
, и я использую метод pandas.DataFrame.where
для замены. Но он работает не так, как ожидалось, потому что Numpy округляет 9999999999 до 10000000000 (10 миллиардов).
Я пробовал это в iPython 3 (Python 3.6.8), Pandas версии 0.24.2, Numpy версии 1.14.0.
Это заявление о замене
df['limit'] = df['limit'].where(df['limit'] != 0, 9999999999)
Я вижу следующие значения столбца для limit
:
0 1.000000e+10
1 1.000000e+10
2 1.000000e+10
3 1.000000e+10
но я ожидаю
0 9999999999.0
1 9999999999.0
2 9999999999.0
3 9999999999.0
Почему происходит округление? Этого не происходит с простым Python
In [1]: (9.999999999) * 10**9
Out[1]: 9999999999.0