【吃饱没事干Python】列表中空值nan的苦恼(已解决)
短信预约 -IT技能 免费直播动态提醒
目录
方法二:使用np.nan_to_num方法使nan值将替换为 0.0(可指定)
方法三:使用数组转换nan被识别为字符串"nan", 可当做字符串进行相应处理,这个最简便
方法四:直接删除nan,利用其np.nan == np.nan值为False的性质
空值nan初步了解
python做数据处理时经常会遇到列表中含有nan的时候,导致你做一些操作经常报错,苦恼不已。
需要注意的是,nan与None是不同的概念。
在python中nan是not a number的意思,比如当0做分母时的结果即为nan,因此nan本质是一种float类型,而且一个nan不会等于另一个nan,
即:np.nan == np.nan的值为False
而None是没有,不存在的意思,类似一种占位符,因此
None == None的值为True
基于上述,nan比None更不好处理,解决方法可以参考以下:
import numpy as npimport pandas as pda = [1,np.nan,2,3,np.nan,4,np.nan]#手动添加 nan,需要使用 np.nanprint(a) # 输出为 [1, nan, 2, 3, nan, 4, nan]
方法一: 将其变换为None来处理
# pd.isnull/pd.isna 可以作为输入判断, np.isnan就会报错new_a = [elem if not pd.isnull(elem) else None for elem in a]print(new_a) # 输出为 [1, None, 2, 3, None, 4, None]
方法二:使用np.nan_to_num方法
使nan值将替换为 0.0(可指定)
new_a = np.nan_to_num(a, nan="指定值")print(new_a) # 输出为 [1, "指定值", 2, 3, "指定值", 4, "指定值"]
方法三:使用数组转换
nan被识别为字符串"nan", 可当做字符串进行相应处理,这个最简便
new_a = np.array(a) # 一维数组和列表是很相似的,一般处理方法都是一样的,可以不用转化为列表了print(a) # 输出为 [1, "nan", 2, 3, "nan", 4, "nan"]
方法四:直接删除nan,利用其np.nan == np.nan值为False的性质
new_a = [a_ for a_ in a if a_ == a_]print(new_a) # 输出为 [1, 2, 3, 4]
来源地址:https://blog.csdn.net/AI_Clay/article/details/126904177
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341