python 判断nan值
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : LaoChen
"""
None 和 nan
type(None)-----------Nonetype
type(Nan)-------------float
判断nan
这里出了7个判断的方法,但实际有效的只有3个,还有半有效的~
后四个方法则是只有np.nan可以判断自己的类型,其他三种没办法自己判断自己。
也就是说:
np.nan is np.nan是True
float(‘nan’) is float(‘nan’) 是False,另外两个也是False
为什么呢?
Nan 全称是Not a Number,是IEEE754标准规定的双精度浮点小数类型的特殊值。所以看d的类型,即使np.nan,
返回也是float类型。
"""
import pandas as pd
import numpy as np
import math
from decimal import Decimal
'''由结果看,前两个是万能的'''
'''第三个对精度高的Decimal行不通'''
def isNan_1(a):
return math.isnan(a)
def isNan_2(a):
return a != a
def isNan_3(a):
if(str(a) == 'nan'):
return True
else:
return False
def isNan_4(a):
return a is float('nan')
def isNan_5(a):
return a is Decimal('nan')
def isNan_6(a):
return a is np.nan
def isNan_7(a):
return a is np.float64('nan')
"""
尝试了四种类型,float(‘nan’) np.float64(‘nan’) Decimal(‘nan’) np.nan
从结果中发现,前两个函数是百分百正确的,而第三种则是对 float 和np.nan有效果,对精度较高的Decimal无效。而我也只能是凑巧找到了该方法。
"""