pandas dataframe: идентифицировать NaN и нулевые значения в одном выражении - PullRequest
0 голосов
/ 01 мая 2018

Есть ли способ объединить два утверждения df.isnull().sum() и (df == 0).sum() чтобы получить следующий обзор?

Демо-версия:

df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,NaN,1,NaN,1], 'c':[0,0,0,0,NaN]})

df

    a   b       c
0   1   0.0     0.0
1   0   NaN     0.0
2   0   1.0     0.0
3   1   NaN     0.0
4   3   1.0     NaN

Ожидаемый результат:

a    2
b    3
c    5

Возможно, очень просто, но я не могу найти решение ... Спасибо за вашу помощь

Ответы [ 3 ]

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

Другой вариант:

>>> ((df == 0) | df.isnull()).sum()
a    2
b    3
c    5
dtype: int64
>>>

Также:

>>> (df.eq(0) | df.isnull()).sum()
a    2
b    3
c    5
dtype: int64
>>>
0 голосов
/ 01 мая 2018

С fillna

df.fillna(0).eq(0).sum()
Out[8]: 
a    2
b    3
c    5
dtype: int64
0 голосов
/ 01 мая 2018

Вы имеете в виду именно это:

In[27]:

(df==0).sum() + df.isnull().sum()
Out[27]: 
a    2
b    3
c    5
dtype: int64

EDIT

Спасибо @coldpseed за предложение, вы также можете сделать следующее:

In[28]:
df[df!=0].isnull().sum()

Out[28]: 
a    2
b    3
c    5
dtype: int64

, что более лаконично, я всегда был за ясность, но иногда выигрывает более короткий код.

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