Python中DataFrame.fillna()误将0视为NA替换的问题求助
解决DataFrame填充NA时误替换0值的问题
核心说明
fillna() 方法默认仅替换NaN/NA缺失值,不会修改非缺失的数值(包括0)。若你的0值被意外替换,按以下方式排查解决:
1. 验证数据有效性
先确认Column1中的0是真正的数值类型,而非字符串或被误识别的缺失值:
# 查看列数据类型 print(data['Column1'].dtype) # 列出列内所有唯一值,排查异常值 print(data['Column1'].unique())
若存在字符串类型的"0",先转换为数值类型:
import pandas as pd data['Column1'] = pd.to_numeric(data['Column1'], errors='coerce')
2. 正确执行缺失值填充
使用如下代码确保仅替换NA值,保留原有0值:
# 推荐写法:不修改原数据,生成新列或覆盖原列 data['Column1'] = data['Column1'].fillna(data['Column2']) # 若需直接修改原DataFrame(谨慎使用) data['Column1'].fillna(data['Column2'], inplace=True)
3. 处理特殊标记的缺失值
若你的原始数据用0表示缺失(但你需要保留真实的0、替换标记为0的缺失值),可先将标记用的0转为NaN,再填充:
# 将Column1中作为缺失标记的0转为NaN data['Column1'] = data['Column1'].replace(0, pd.NA) # 用Column2填充缺失值 data['Column1'] = data['Column1'].fillna(data['Column2'])
内容的提问来源于stack exchange,提问作者Isaac Black
相关产品推荐
相关产品推荐

