np.isnan
- это функция numpy
, поэтому она работает с массивами numpy и значениями, полученными из ввода:
In [418]: df[['Binary 1', 'Binary 2']].values
Out[418]:
array([[ True, False],
[ True, False],
[False, True],
[False, True],
[ True, False]])
Это 2-й логический массив dtype. Но весь фрейм данных имеет смешанные dtypes, поэтому он создает объект dtype:
In [419]: df.values
Out[419]:
array([[True, False, 42, 4, 25],
[True, False, 52, 24, 94],
[False, True, 36, 31, 57],
[False, True, 24, 2, 62],
[True, False, 73, 3, 70]], dtype=object)
Приведение этого массива к int
(или с плавающей точкой) работает нормально: np.isnan(df.values.astype(int))
Но как Как отмечалось в комментариях, pandas
имеет свой собственный тестер nan
, который, я считаю, еще более мощный (и прощающий). np.isnan
действительно предназначен для массивов с плавающей точкой, так как np.nan
является плавающей точкой.