Python中如何将指定数值转换为NaN值
不同常用场景的操作方法
1. Python Pandas 场景(最常用的表格/图表数据预处理场景)
如果你的数据存放在pandas的Series或DataFrame中,直接用replace方法即可实现指定值替换为NaN:
import pandas as pd import numpy as np # 替换单列中的特定值-66.23为NaN df['目标列名'] = df['目标列名'].replace(-66.23, np.nan) # 替换整个DataFrame中所有出现的-66.23为NaN df = df.replace(-66.23, np.nan) # 如果要替换多个特定负数,传入列表即可 df = df.replace([-66.23, -99.99, -100], np.nan)
注意:如果你的数值是浮点类型存在精度误差,可以用判断逻辑替代:
df['目标列名'] = df['目标列名'].mask(df['目标列名'].sub(-66.23).abs().lt(1e-6), np.nan)
2. Python 原生列表场景
如果数据存在普通列表中,用列表推导式处理:
import math original_list = [12.3, -66.23, 45.6, -66.23, 78.9] processed_list = [x if x != -66.23 else math.nan for x in original_list]
3. R 语言场景
如果用R处理数据,替换指定值为NA(R中的空值对应NaN的常用场景):
# 替换向量中的-66.23为NA vec[vec == -66.23] <- NA # 替换数据框所有列中的-66.23为NA df[df == -66.23] <- NA # 存在浮点精度问题时的写法 vec[abs(vec - (-66.23)) < 1e-6] <- NA
内容的提问来源于stack exchange,提问作者Anna Flemming
相关产品推荐
相关产品推荐

