如何计算 Pandas 中列值是假的?

How to count where column value is falsy in Pandas?

有一个列名为 ADDRESS 的数据框:

我尝试计算地址为 null, false, Nan, None, empty string 等的行数

我试过这个:

t = len(new_dfr[new_dfr['ADDRESS'] == ''])
print(r)

如何在 Pandas 中做到这一点?

您可以使用 isna():

计算 NA 值
df['ADDRESS'].isna().sum()

这将计算所有 None、NaN 值,但不计算 False 或空字符串。您可以将 False 替换为 None 来覆盖:

df['ADDRESS'].replace('', None).replace(False, None).isna().sum()

如果我没理解错的话,您基本上是想计算包括 NaN 在内的所有虚假值(注意 NaNs are considered truthy)。在 pandas 术语中,这可以翻译成

# (ADDRESS is NaN) OR (ADDRESS is not truthy)
(new_dfr['ADDRESS'].isna() | ~new_dfr['ADDRESS'].astype(bool)).sum()

示例:

new_dfr = pd.DataFrame({
    'ADDRESS': [np.nan, None, False, '', 0, 1, True, 'not empty']
})


>>> new_dfr
     
     ADDRESS
0        NaN
1       None
2      False
3           
4          0
5          1
6       True
7  not empty

>>> new_dfr['ADDRESS'].isna()

0     True
1     True
2    False
3    False
4    False
5    False
6    False
7    False
Name: ADDRESS, dtype: bool

>>> ~new_dfr['ADDRESS'].astype(bool)

0    False
1     True
2     True
3     True
4     True
5    False
6    False
7    False
Name: ADDRESS, dtype: bool

>>> new_dfr['ADDRESS'].isna() | ~new_dfr['ADDRESS'].astype(bool)

0     True
1     True
2     True
3     True
4     True
5    False
6    False
7    False
Name: ADDRESS, dtype: bool

>>> (new_dfr['ADDRESS'].isna() | ~new_dfr['ADDRESS'].astype(bool)).sum()
5