python 判断nan值

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无效。而我也只能是凑巧找到了该方法。
"""


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值