Python 在混合对象类型中查找空值
假设我有以下列表,我想从中识别空值:Python 在混合对象类型中查找空值,python,numpy,Python,Numpy,假设我有以下列表,我想从中识别空值: >>> import numpy as np >>> MyList=['Apple',np.nan,4,100.4] >>> MyList ['Apple', nan, 4, 100.4] >>> 由于我的列表包含一个字符串,因此函数np.isnan()将无法工作。因此,我编写了一个函数,首先检查该项是否为浮点,然后检查它是否为null >>> def isnull
>>> import numpy as np
>>> MyList=['Apple',np.nan,4,100.4]
>>> MyList
['Apple', nan, 4, 100.4]
>>>
由于我的列表包含一个字符串,因此函数np.isnan()
将无法工作。因此,我编写了一个函数,首先检查该项是否为浮点,然后检查它是否为null
>>> 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]
>>>
这是最好的方法吗?您最好还是抓住
类型错误
:
def isnull(x):
try:
return np.isnan(x)
except TypeError:
return False
这并不是一个很大的改进,但我认为大多数pythonistas在看到
type(something)==somethine\u type
…时会有点畏缩,你可能最好还是抓住TypeError
:
def isnull(x):
try:
return np.isnan(x)
except TypeError:
return False
这并不是一个很大的改进,但我认为大多数pythonistas在看到dtype=object的numpy数组时会有些畏缩。你可能想考虑它首先使用熊猫到原生(FLUAT64)类型,沿着线< /P>
import pandas as pd
pd.to_numeric(MyList, errors='coerce')
指定errors='concurve'以强制无法解析为数值的字符串变为NaN。列类型应该是dtype:float64,然后
np.isnan()
check应该可以工作,而且速度也会更快您有dtype=object的numpy数组。你可能想考虑它首先使用熊猫到原生(FLUAT64)类型,沿着线< /P>
import pandas as pd
pd.to_numeric(MyList, errors='coerce')
指定errors='concurve'以强制无法解析为数值的字符串变为NaN。列类型应该是dtype:float64,然后np.isnan()
check应该可以工作,而且速度也会更快