我正在尝试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,并且在遇到字符串时不给出错误?
只需使用这两种:
>>> 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)
| 归档时间: |
|
| 查看次数: |
12570 次 |
| 最近记录: |