Неожиданная проблема с плавающей точкой в ​​pandas.to_numeric - PullRequest
0 голосов
/ 10 июня 2019

Чем объясняется это, казалось бы, непоследовательное поведение с плавающей запятой pandas.to_numeric?

In [116]: pd.to_numeric([100.018], errors='ignore', downcast='float')
Out[116]: array([100.018], dtype=float32)

In [117]: pd.DataFrame([100.018]).apply(pd.to_numeric, errors='ignore', downcast='float')
Out[117]:
            0
0  100.017998

In [118]: pd.DataFrame([100.018], dtype=np.float64).apply(pd.to_numeric, errors='ignore', downcast='float').dtypes
Out[118]:
0    float32
dtype: object

Мне кажется, что downcast неправильно работает с документами как 100.018 можно привести к np.float32

Если нет None, и если данные были успешно преобразованы в числовые dtype (или если для начала данные были числовыми), результирующие данные до наименьшего возможного числа dtype в соответствии с следующие правила:

  • 'integer' или 'signed': наименьшее число со знаком int dtype (мин .: np.int8)
  • 'unsigned': наименьший без знака int dtype (мин .: np.uint8)
  • 'float': наименьший float dtype (мин .: np.float32)
In [119]: import pandas as pd

In [120]: pd.__version__
Out[120]: '0.23.4'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...