Python Pandas — notnull() и ~notnull() не являются взаимоисключающими

python #pandas #conditional-statements

#python #pandas #условные операторы

Вопрос:

Когда я запускаю следующий код:

 maintenance_items['Last order'][maintenance_items['Last order'].notnull()].count()
 

Я получаю ответ 16522 (из 19313). Это кажется правильным. Если я, однако, использую любой из следующих кодов для проверки обратного:

 maintenance_items['Last order'][~maintenance_items['Last order'].notnull()].count() 
 

или

 maintenance_items['Last order'][maintenance_items['Last order'].isnull()].count()
 

или

 maintenance_items['Last order'][maintenance_items['Last order'].isna()].count()
 

Я получаю ответ 0 (из 19313). Я ожидал 2791 (19313 минус 16522). Есть ли веская причина, по которой notnull() и противоположные утверждения выше не являются взаимоисключающими?

Комментарии:

1. Полезно прочитать документацию. pandas. DataFrame.count -> «Подсчитывать ячейки, отличные от NA , для каждого столбца или строки. Значения None, NaN, NaT и, возможно, numpy.inf (в зависимости от pandas.options.mode.use_inf_as_na) считаются NA.» (курсив мой). Следовательно, count на любой серии только NaN будет 0 . Возможно, вы ищете pandas. DataFrame.size или какой-то аналогичный способ получить общую длину подмножества.

2. Это очень помогает, спасибо. Я перешел с .count() на len(), и теперь ответы правильные. Хорошего дня!