如何计算在熊猫列值是假的?



存在一个列名为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在内的所有假值(请注意nan被认为是真值)。用熊猫的话来说,这可以翻译成

# (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

最新更新