如何检查nan和空字符串

MLK*_*ing 2 python string nan

我正在尝试NaNs在Python字符串列表中查找所有空字符串(即“”)。请查看以下带有3个选项的代码:

names=['Pat','Sam', np.nan, 'Tom', '']
for idx,name in enumerate(names):
    if name=='':        #Option 1 
    if pd.isnull(name): #Option 2
    if np.isnan(name):  #Option 3 
        print(idx)
Run Code Online (Sandbox Code Playgroud)

选项1:此检查name =“”不能捕获NaN

选项2:此检查pd.isnull(name)不能捕获空字符串

选项3:此检查np.isnan(name)对字符串(例如“ Pat”)给出以下错误。

----> 6如果np.isnan(name):

TypeError:输入类型不支持ufunc'isnan',并且根据强制转换规则“ safe *” *,不能将输入安全地强制转换为任何受支持的类型

问题:是否有任何函数/方法可以检查空字符串NaNs,并且在遇到字符串时不给出错误?

jua*_*aga 6

只需使用这两种

>>> names=['Pat','Sam', np.nan, 'Tom', '']
>>> for idx,name in enumerate(names):
...     if name == '' or pd.isnull(name):
...         print(idx)
...
2
4
Run Code Online (Sandbox Code Playgroud)

但是,请意识到:

>>> pd.isnull(None)
True
Run Code Online (Sandbox Code Playgroud)

因此,如果要专门NaN检查而不是None,请使用math.isnan(同时防止将非float值传递给math.isnan

>>> import math
>>> for idx,name in enumerate(names):
...     if name == '' or (isinstance(name, float) and  math.isnan(name)):
...         print(idx)
...
2
4
Run Code Online (Sandbox Code Playgroud)