从Python列表中删除Nan值

记录看到的问题及解决方法(亲测可用)

链接:从Python列表中删除Nan值-python黑洞网

问题:为什么这不起作用吗?我试图从我的python列表/数组中删除nan值。

import math
import numpy as np

def clean_List_nan(List):
    Myarray=np.array(List)
    x = float('nan')
    for elem in Myarray:
        if math.isnan(x):
            x = 0.0
    return Myarray


oldlist =[nan, 19523.3211203121, 19738.4276377355, 19654.8478302742, 119.636737571360, 19712.4329437810, nan, 20052.3645613346, 19846.4815936009, 20041.8676619438, 19921.8126944154, nan, 20030.5073635719]

print(clean_List_nan(oldlist))

解决方案:

函数中的控制流没有意义-将变量x设置为nan,然后检查它是否确实nan在循环中并将其设置为0。您永远不会触摸或检查数组的任何元素。

要将nan值正确转换为0,您可以使用numpy.nan_to_num正在处理NumPy数组的方法,仅使用它即可。

演示(jupyter notebook):

In[37]: arr
Out[37]: 
array([            nan,  19523.32112031,  19738.42763774,  19654.84783027,
          119.63673757,  19712.43294378,             nan,  20052.36456133,
        19846.4815936 ,  20041.86766194,  19921.81269442,             nan,
        20030.50736357])


In[38]: np.nan_to_num(arr)
Out[38]: 
array([     0.        ,  19523.32112031,  19738.42763774,  19654.84783027,
          119.63673757,  19712.43294378,      0.        ,  20052.36456133,
        19846.4815936 ,  20041.86766194,  19921.81269442,      0.        ,
        20030.50736357])

如果您对常规Python列表的方法的功能版本更感兴趣,则可以尝试这样的操作,或者尝试使用fafl提供的列表理解功能。

In[39]: list(map(lambda x: 0.0 if math.isnan(x) else x, oldlist))
Out[39]: 
[0.0,
 19523.3211203121,
 19738.4276377355,
 19654.8478302742,
 119.63673757136,
 19712.432943781,
 0.0,
 20052.3645613346,
 19846.4815936009,
 20041.8676619438,
 19921.8126944154,
 0.0,
 20030.5073635719]

知识补充:

pandas numpy处理缺失值,none与nan比较 - 多一点 - 博客园原文链接:https://junjiecai.github.io/posts/2016/Oct/20/none_vs_nan/ 建议从这里下载这篇文章对应的.ipynb文件和相关资源。这样你就能在Juhttps://www.cnblogs.com/onemorepoint/p/8966791.html


数据返回nan_NumPy 的 nan 如何理解?_weixin_39761655的博客-CSDN博客Python 中表示空数据使用 None,它是 NoneType类型,如下所示:In[59]:type(None)Out[59]:NoneTypeNoneType 类型没有对外公开属性和方法:因此,None 比较容易理解,就是一种空类型。但是使用过 NumPy 的肯定都会接触到 nan 这种类型,它的其他写法:NaN或 NAN,查看其类型却发现是 floa...https://blog.csdn.net/weixin_39761655/article/details/111388931?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

你可能感兴趣的:(Python学习,python)