在混合对象类型Python中查找Null值

时间:2016-03-17 20:44:31

标签: python numpy

假设我有以下列表,我想从中确定空值:

>>> 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]
>>> 

这是最好的搭配吗?

2 个答案:

答案 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()检查应该工作,它也会更快