Numpy / Pandas чистый способ проверить, является ли конкретное значение NaN - PullRequest
0 голосов
/ 22 мая 2018

Как я могу проверить, является ли данное значение NaN?

например, if (a == np.NaN) (не работает)

Перед тем, как понизить голос, обратите внимание:

  • Метод Numpy isnan выдает ошибки с типами данных, такими как строка
  • Документы Pandas предоставляют только методы для удаления строк, содержащих NaN, или способы проверки, если / когда DataFrame содержит NaN.Я спрашиваю о проверке, является ли конкретное значение NaN.
  • Релевантные вопросы Stackoverflow и результаты поиска Google, кажется, о проверке "если какое-либо значение равно NaN" или "какие значения в DataFrame"

Должен быть чистый способ проверить, является ли данное значение NaN?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы можете использовать свойство inate, которое NaN! = NaN

, поэтому a == a вернет False, если a равно NaN

Это будет работатьдаже для строк

Пример:

In[52]:
s = pd.Series([1, np.NaN, '', 1.0])
s

Out[52]: 
0      1
1    NaN
2       
3      1
dtype: object


for val in s:
    print(val==val)
True
False
True
True

Это можно сделать векторизованным способом:

In[54]:
s==s

Out[54]: 
0     True
1    False
2     True
3     True
dtype: bool

, но вы все равно можете использовать метод isnull нався серия:

In[55]:
s.isnull()

Out[55]: 
0    False
1     True
2    False
3    False
dtype: bool

ОБНОВЛЕНИЕ

Как отмечено @piRSquared, если вы сравните None==None, это вернет True, но pd.isnull вернет True поэтому в зависимости от того, хотите ли вы трактовать None как NaN, вы все равно можете использовать == для сравнения или pd.isnull, если хотите трактовать None как NaN

0 голосов
/ 22 мая 2018

Панд имеет isnull, notnull, isna и notna

Эти функции работают для массивов или скаляров.


Настройка

a = np.array([[1, np.nan],
              [None, '2']])

Функции Pandas

pd.isna(a)
# same as
# pd.isnull(a)

array([[False,  True],
       [ True, False]])

pd.notnull(a)
# same as
# pd.notna(a)

array([[ True, False],
       [False,  True]])

DataFrame (или Series) методы

b = pd.DataFrame(a)

b.isnull()
# same as
# b.isna()

       0      1
0  False   True
1   True  False

b.notna()
# same as
# b.notnull()

       0      1
0   True  False
1  False   True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...