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?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值