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

如何在pandas中针对含字符串的列替换指定值-99

问题原因

pandas 的 replace() 方法默认严格匹配数据类型,你之前调用的 .replace(-99, 0) 只能匹配到数值类型列的整型/浮点型 -99,而包含字符串的列中存储的是字符串形式的 '-99',二者数据类型不同,所以不会被匹配替换。

解决方案

方案1:一次性全表匹配替换

直接传入类型匹配的替换映射字典,会自动对对应类型的目标值做替换,无需单独筛选列:

# 数值类型的-99替换为0,字符串类型的'-99'替换为'unknown'
df = df.replace({
    -99: 0,
    '-99': 'unknown'
})

方案2:按列类型分别处理

如果需要更精准的控制,可单独筛选对应类型的列做替换操作:

# 替换数值列的-99为0
num_cols = df.select_dtypes(include='number').columns
df[num_cols] = df[num_cols].replace(-99, 0)

# 替换字符串/object列的'-99'为'unknown'
str_cols = df.select_dtypes(include='object').columns
df[str_cols] = df[str_cols].replace('-99', 'unknown')

注意事项

如果字符串列中的'-99'存在前后空格,可先对字符串列做去空格处理再替换:

# 先对所有字符串列做去空格处理
df[str_cols] = df[str_cols].apply(lambda x: x.str.strip())
# 再执行替换操作
df = df.replace({-99:0, '-99':'unknown'})

替换效果示例

内容的提问来源于stack exchange,提问作者George Zambrano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:00:01