我有一个pandas数据框的列,我从带有空白单元格的数据库查询中获取。空白单元格变为“无”,我想检查每行是否为无:
In [325]: yes_records_sample['name']
Out[325]:
41055 John J Murphy Professional Building
25260 None
41757 Armand Bayou Nature Center
31397 None
33104 Hubert Humphrey Building
16891 Williams Hall
29618 None
3770 Covenant House
39618 None
1342 Bhathal Student Services Building
20506 None
我对文档的理解是,我可以使用isnull()
命令http://pandas.pydata.org/pandas-docs/dev/missing_data.html#values-considered-missing检查每行是否为空
然而,这个功能对我不起作用:
In [332]: isnull(yes_records_sample['name'])
我收到以下错误:
NameError Traceback (most recent call last)
<ipython-input-332-55873906e7e6> in <module>()
----> 1 isnull(yes_records_sample['name'])
NameError: name 'isnull' is not defined
我还看到有人刚刚替换了“无”字符串,但这种方法的这些变体都不适合我: Rename "None" value in Pandas
yes_records_sample['name'].replace('None', "--no value--")
yes_records_sample['name'].replace(None, "--no value--")
我最终能够使用fillna
函数,并使用空字符串yes_records_sample.fillna('')
填充每个行作为解决方法,然后我可以检查yes_records_sample['name']==''
但我深感困惑的是'无'是如何工作的以及它意味着什么。有没有办法轻松检查数据框中的单元格是否为“无”?
答案 0 :(得分:31)
这样称呼:
yes_records_sample['name'].isnull()
答案 1 :(得分:1)
我找不到任何内置的功能,所以我手动完成。如果是系列,代码是:
import numpy as np
series = yes_records_sample['name']
n = np.empty_like(series)
n[...] = None
nones = series.values == n
对于DataFrames,代码非常相似:
import numpy as np
df = yes_records_sample
n = np.empty_like(df)
n[...] = None
nones = df == n
.isnull()的问题在于它不区分NaN和None。这可能是您申请中的问题,也可能不是。