Привет,
Недавно pandas представил целочисленный тип dtype, допускающий значение NULL:
https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html
Я ожидал, что numpy автоматически преобразует такие массивы в тип с плавающей запятой и заполнит np.nan. Однако по какой-то причине он преобразует его в объект:
pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values.dtype
что приводит к таким ошибкам
np.nanmax(pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values)
возвращает «TypeError: логическое значение NA неоднозначно»
Это ожидается?
Это ожидается?
Я бы сказал, что да, поскольку целые числа, допускающие значение NULL, не относятся к типу NumPy.
Я согласен, это в основном задумано и означает, что все работает так, как ожидалось. Не исключено, что NumPy может понять это в какой-то момент, но вряд ли это произойдет в ближайшее время.
Используя новый UInt8
, вы в некотором смысле выбираете, что NaN
действительно не то же самое, что NA, и у панд есть pd.NA
чтобы сделать это различие более ясным.
@ Kreol64 Я открыл pandas-dev / pandas # 37460, чтобы обсудить это на стороне pandas