假设我有以下列表,我想从中确定空值:
>>> import numpy as np
>>> MyList=['Apple',np.nan,4,100.4]
>>> MyList
['Apple', nan, 4, 100.4]
>>>
由于我的列表包含字符串,因此函数np.isnan()
将不起作用。因此,我改为编写一个函数,首先检查项是否为浮点数,然后检查它是否为空。
>>> def isnull(x):
... if type(x)==np.float:
... return np.isnan(x)
... else:
... return False
...
>>> [isnull(x) for x in MyList]
[False, True, False, False]
>>>
这是最好的搭配吗?
答案 0 :(得分:2)
你可能最好赶上TypeError
:
def isnull(x):
try:
return np.isnan(x)
except TypeError:
return False
这不是一个巨大的改进,但我认为大多数pythonistas在看到type(something) == some_type
时会有点畏缩......
答案 1 :(得分:0)
你有dtype = object的numpy数组。您可能要考虑首先使用pandas强制转换为本机(float64)类型,沿着该行
import pandas as pd
pd.to_numeric(MyList, errors='coerce')
指定errors ='coerce'以强制无法解析为数值的字符串变为NaN。列类型将是dtype:float64,然后np.isnan()
检查应该工作,它也会更快