[Numpy] Numpy对于NaN值的判断
numpy.nan的数据类型是float类型
import numpy as np type(np.nan) # float
任何数字和numpy.nan进行计算,返回的结果都是nan
import numpy as np print(np.nan + 1) # nan print(np.nan - 1) # nan print(np.nan * 1) # nan print(np.nan / 1) # nan
对空值NaN的判断不能直接使用==表达式,bool表达式,以及不可直接使用if语句判断
import numpy as np
np.nan == np.nan # False
bool(np.nan) # True
# 输出结果:na is not null
if np.nan:
print(np.nan is not null)
需要使用Numpy自带的方法np.isnan(),is表达式,in表达式进行判断
import numpy as np np.nan is np.nan # True np.isnan(np.nan) # True np.nan in [np.nan] # True
提示 如果使用Pandas来判断numpy.nan,可使用pd.isnull(),pd.isna() import numpy as np import pandas as pd pd.isnull(np.nan) # True pd.isna(np.nan) # True
注意:None、NaN、空字符串的区别
# None是Python的特殊类型 # NoneType对象,它只有一个值None type(None) # NoneType None == None # True None == np.nan # False # 空字符串 type() # str
Pandas中的pd.isnull不仅可以检测np.nan也可以检测None,但不可以检测字符串,比如,nan,None
import pandas as pd import numpy as np pd.isnull(np.nan) # True pd.isnull(None) # True pd.isnull() # False pd.isnull(np.nan) # False pd.isnull(None) # False
import pandas as pd
import numpy as np
List = [nan, , None, None, np.nan]
for i in List:
if i == or pd.isnull(i) or pd.isnull(float(nan)) or i == None:
print(i)
# 上述输出结果:
# nan
#
# None
# None
# nan
List(5 elements)
