背景:
升级python3.8版本后,where函数用不了,替换成replace结果就把nan替换成6.0了,感觉很奇怪
![](https://i-blog.csdnimg.cn/blog_migrate/4bf1df45cb91a904bdc31a3f1a718172.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a8ce258e4d438ac8f39cc91c8779aa25.png)
![](https://i-blog.csdnimg.cn/blog_migrate/696fd9ed244d460c8163f081baae3507.png)
python3.8没有这个问题
![](https://i-blog.csdnimg.cn/blog_migrate/97ae4a8177e03eda9fb59757f81a6751.png)
原因:
看了3.6replace的源码里面替换的value等于None时,传递了一个标量
![](https://i-blog.csdnimg.cn/blog_migrate/dbe99802d052d8a649ff319abd996fff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/54f0f10b7cd0c3380a283159cd28a066.png)
在python3.8中value等于None时,保留None了
解决:
现在要实现python3.6不用where和python3.8不用replace下一样的效果,把np.nan替换成None
![](https://i-blog.csdnimg.cn/blog_migrate/c3bb99f57e0ca29597a5de80d938fc53.png)
不太行,最后就手动换的
注意:
判断是否是np.nan不能直接==np.nan,得用isnan()函数判断