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

使用pandas和numpy数据分析基础:无法用df.replace替换NaN问题

解决DataFrame中'?'无法替换为NaN的问题
  • 先确认目标字符串是否有隐藏空格或特殊字符
    有时候看起来是?,实际可能带前后空格或不可见字符,先打印所有唯一值排查:
print(df.stack().unique())

如果存在空格,用正则匹配替换所有带空格的?:

df = df.replace(r'\s*\?\s*', np.NaN, regex=True)
  • 明确replace的参数配置
    可以用字典形式指定替换规则,确保全局生效:
# 方式1:重新赋值给df
df = df.replace({'?': np.NaN})
# 方式2:原地修改(无需重新赋值)
df.replace({'?': np.NaN}, inplace=True)
  • 检查列的数据类型
    如果列是数值类型,?会被自动识别为无效值(读取时可能已转成NaN),先查看列类型:
print(df.dtypes)

如果是object类型但替换无效,尝试强制转换列类型后再替换,或者在读取数据时直接指定na_values:

# 读取时直接将?识别为NaN
df = pd.read_csv('your_data.csv', na_values='?')
  • 排查嵌套结构
    如果DataFrame包含列表、字典等嵌套元素,replace无法直接处理,需要先展开或清理这些特殊结构后再执行替换。

内容的提问来源于stack exchange,提问作者Iliya Fathma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:52:03