How can I check for NaN values?

后端 未结 17 1866
盖世英雄少女心
盖世英雄少女心 2020-11-22 05:02

float(\'nan\') results in Nan (not a number). But how do I check for it? Should be very easy, but I cannot find it.

相关标签:
17条回答
  • 2020-11-22 05:56

    In Python 3.6 checking on a string value x math.isnan(x) and np.isnan(x) raises an error. So I can't check if the given value is NaN or not if I don't know beforehand it's a number. The following seems to solve this issue

    if str(x)=='nan' and type(x)!='str':
        print ('NaN')
    else:
        print ('non NaN')
    
    0 讨论(0)
  • 2020-11-22 06:00

    The usual way to test for a NaN is to see if it's equal to itself:

    def isNaN(num):
        return num != num
    
    0 讨论(0)
  • math.isnan()

    or compare the number to itself. NaN is always != NaN, otherwise (e.g. if it is a number) the comparison should succeed.

    0 讨论(0)
  • 2020-11-22 06:01

    for strings in panda take pd.isnull:

    if not pd.isnull(atext):
      for word in nltk.word_tokenize(atext):
    

    the function as feature extraction for NLTK

    def act_features(atext):
    features = {}
    if not pd.isnull(atext):
      for word in nltk.word_tokenize(atext):
        if word not in default_stopwords:
          features['cont({})'.format(word.lower())]=True
    return features
    
    0 讨论(0)
  • 2020-11-22 06:02

    I am receiving the data from a web-service that sends NaN as a string 'Nan'. But there could be other sorts of string in my data as well, so a simple float(value) could throw an exception. I used the following variant of the accepted answer:

    def isnan(value):
      try:
          import math
          return math.isnan(float(value))
      except:
          return False
    

    Requirement:

    isnan('hello') == False
    isnan('NaN') == True
    isnan(100) == False
    isnan(float('nan')) = True
    
    0 讨论(0)
提交回复
热议问题