Check for NaN values in Python
The Problem
I sometimes see the value NaN (Not a Number) when working with floats in Python. How can I check whether a given value is NaN?
The Solution
The best way to do this is by using the isnan() function from Python’s built-in math library:
import math
nan = float('nan')
zero = 0
one = 1
print(math.isnan(nan)) # will print True
print(math.isnan(zero)) # will print False
print(math.isnan(one)) # will print False
Note that isnan() will throw a TypeError if given a non-numeric value. Thus, a more robust implementation might look like this:
import math
def is_nan(value):
try:
return math.isnan(value)
except TypeError:
return False
nan = float('nan')
zero = 0
one = 1
hello = "Hello!"
print(is_nan(nan)) # will print True
print(is_nan(zero)) # will print False
print(is_nan(one)) # will print False
print(is_nan(hello)) # will print False
Considered "not bad" by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world's best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.