【吃饱没事干Python】列表中空值nan的苦恼(已解决)

目录

空值nan初步了解

方法一: 将其变换为None来处理

方法二:使用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 np
import pandas as pd
a = [1,np.nan,2,3,np.nan,4,np.nan]#手动添加 nan,需要使用 np.nan
print(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]

  • 18
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值