如何在DataFrame运算中将NaN值替换为指定数值
实现方法
- 核心逻辑:pandas中默认NaN参与算术运算返回NaN,只需在运算时将NaN视为0即可达成NaN+数值=对应数值的效果,推荐使用pandas内置向量化操作实现,无需手动遍历元素,效率更高。
方法1:直接使用add()方法(最优)
通过add()方法的fill_value参数指定NaN的替换值为0,一行代码即可完成需求,非数值内容(如示例中的-)会自动保留不受影响:
DF1 = DF1.add(2.0, fill_value=0)
方法2:先填充NaN再运算
先通过fillna()将所有NaN替换为0,再执行加法操作:
DF1 = DF1.fillna(0) + 2.0
如果你的DataFrame包含非数值列,可仅对数值列操作避免报错:
# 筛选所有数值列 num_cols = DF1.select_dtypes(include='number').columns # 仅对数值列执行加2操作,NaN替换为0计算 DF1[num_cols] = DF1[num_cols].add(2.0, fill_value=0)
原有代码问题说明
你写的循环逻辑本身存在错误:for ele in DF1默认遍历的是DataFrame的列名,而非单元格元素,无法实现逐元素加2的效果,pandas处理表格数据优先使用内置向量化方法,无需手动写循环。
内容的提问来源于stack exchange,提问作者Devil
相关产品推荐
相关产品推荐

