存在一个列名为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