2

I have a list which is defined as follows:

mean=[0,1,3,6,4,5,nan,456,nan,5,3,7,nan]

How do i replace all the values having nan to 0.

Karan Jain
  • 405
  • 1
  • 7
  • 12

2 Answers2

4

Assuming "nan" really is a NaN, you can't use ordinary comparisons to find them, NaN is not equal to any other number or NaN. Yes, it's not equal to itself.

So, you have to use math.isnan() to do the checking:

mean2 = [0 if math.isnan(x) else x for x in mean]
unwind
  • 391,730
  • 64
  • 469
  • 606
1

Assuming nan is already a defined variable, then you can do:

>>> nan="nan"
>>> mean=[0,1,3,6,4,5,nan,456,nan,5,3,7,nan]
>>> print([0 if i==nan else i for i in mean])
[0, 1, 3, 6, 4, 5, 0, 456, 0, 5, 3, 7, 0]

For NaN referring Not a Number:

>>> import math
>>> mean=[0,1,3,6,4,5,float("NaN"),456,float("NaN"),5,3,7,float("NaN")]
>>> print([0 if math.isnan(i) else i for i in mean])
[0, 1, 3, 6, 4, 5, 0, 456, 0, 5, 3, 7, 0]
riteshtch
  • 8,629
  • 4
  • 25
  • 38