Чем объясняется это, казалось бы, непоследовательное поведение с плавающей запятой 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'