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(), и теперь ответы правильные. Хорошего дня!