You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:47:14