如何将DataFrame中的NaN值替换为指定文本
Pandas DataFrame指定列内容替换为固定文本的实现说明
原代码适配场景说明
你写的两段代码分别对应两种不同的替换场景,注意区分使用条件:
fillna方法只能识别pandas内置的原生缺失值(pd.NA/np.nan),无法匹配单元格内容为字符串"NaN"的情况,你写的fillna写法本身是正确的,适合批量给不同列指定不同的替换值,如果不需要修改原数据可以去掉inplace=True,直接赋值给新变量即可:
# 仅替换原生缺失值 dftotal = dftotal.fillna({"Computer_OS":"not registered", "Computer_OS_version":"not registered"})
- 你写的
loc写法仅能匹配Computer_OS列内容为字符串"NaN"的单元格,如果需要批量处理多列的字符串"NaN",可以简化为批量替换写法,避免重复写逻辑:
# 替换多列的字符串"NaN" target_cols = ["Computer_OS", "Computer_OS_version"] dftotal[target_cols] = dftotal[target_cols].replace("NaN", "not registered")
通用兼容写法
如果你不确定空值是原生缺失值还是字符串形式的"NaN",可以一次性覆盖两种场景:
import numpy as np target_cols = ["Computer_OS", "Computer_OS_version"] dftotal[target_cols] = dftotal[target_cols].replace([np.nan, "NaN"], "not registered")
内容的提问来源于stack exchange,提问作者OMAR LOPEZ
相关产品推荐
相关产品推荐

