Выбор ячеек pandas со значением None

У меня есть столбец pandas, который я получил из запроса базы данных с ячейками blanck. Пустые ячейки становятся "Нет", и я хочу проверить, нет ли каждой из строк:

In [325]: yes_records_sample['name']
Out[325]: 
41055    John J Murphy Professional Building
25260                                   None
41757             Armand Bayou Nature Center
31397                                   None
33104               Hubert Humphrey Building
16891                         Williams Hall
29618                                   None
3770                          Covenant House
39618                                   None
1342       Bhathal Student Services Building
20506                                   None

Мое понимание в документации заключается в том, что я могу проверить, равна ли каждая строка нулевым с помощью команды isnull() http://pandas.pydata.org/pandas-docs/dev/missing_data.html#values-considered-missing

Эта функция, однако, не работает для меня:

In [332]: isnull(yes_records_sample['name'])

Я получаю следующую ошибку:

NameError Traceback (most recent call last)
<ipython-input-332-55873906e7e6> in <module>()
----> 1 isnull(yes_records_sample['name'])
NameError: name 'isnull' is not defined

Я также видел, что кто-то просто заменил строки "Нет", но ни один из этих вариантов этого подхода не работал у меня: Переименовать "Нет" значение в Pandas

yes_records_sample['name'].replace('None', "--no value--")
yes_records_sample['name'].replace(None, "--no value--")

В конечном итоге я смог использовать функцию fillna и заполнить каждую из этих строк пустой строкой yes_records_sample.fillna('') как обходной путь, а затем я мог бы проверить yes_records_sample['name']==''. Но я глубоко смущен тем, как работает "Нет" и что это значит. Есть ли способ легко проверить, не является ли ячейка в фрейме данных "Нет"?

Ответы

Ответ 1

Назовите его следующим образом:

yes_records_sample['name'].isnull()

Ответ 2

Я не мог найти встроенный, который делает именно это, поэтому я делаю это вручную. В случае Серии код следующий:

import numpy as np
series = yes_records_sample['name']
n = np.empty_like(series)
n[...] = None
nones = series.values == n

В случае DataFrames код очень похож:

import numpy as np
df = yes_records_sample
n = np.empty_like(df)
n[...] = None
nones = df == n

Моя проблема с .isnull() заключается в том, что она не различает NaN и None. Это может быть или не быть проблемой в вашем приложении.