我有一个列表,其定义如下:
mean=[0,1,3,6,4,5,nan,456,nan,5,3,7,nan]
如何将所有具有nan的值替换为0。
答案 0 :(得分:4)
假设" nan"真的是NaN,你不能使用普通的比较来找到它们,NaN不等于任何其他数字或NaN。是的,它不等于它自己。
因此,您必须使用math.isnan()
进行检查:
mean2 = [0 if math.isnan(x) else x for x in mean]
答案 1 :(得分:1)
假设nan
已经是一个已定义的变量,那么你可以这样做:
>>> 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]
NaN
引用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]