Python中NaN的处理

在这里插入图片描述

px = [int(i) for i in element.get('polygon_x').split(" ")]
py = [int(i) for i in element.get('polygon_y').split(" ")]
pdraw.polygon(list(zip(px,py)), fill=colormap[label], outline=colormap[label])

上面的代码在处理包含NaN数据和2.155000e+02数据时会出错。NaN2.155000e+02对应的数据类型必须是float不能是int。所以上述代码修改为:

px = [i for i in element.get('polygon_x').split(" ")]
py = [i for i in element.get('polygon_y').split(" ")]
px_py_list = []
for x, y in list(zip(px, py)):
    #if np.isnan(x) and np.isnan(y):
    #if pd.isnull(x) or pd.isnull(y):
    if math.isnan(float(x)) or math.isnan(float(y)):
        print(x, y)
    else:
        px_py_list.append((np.round(float(x)), np.round(float(y))))
pdraw.polygon(px_py_list, fill=colormap[label], outline=colormap[label])

判断是否是NaN数据,math.isnan()比np.isnan()和pd.isnull()好用。np.isnan()容易出现错误。

参考资料
ValueError: invalid literal for int() with base 10
python判断数据框中某元素是否为‘nan
如何检查python中的值是否为nan?

你可能感兴趣的:(Python库,程序错误,NaN)