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

如何将Pandas DataFrame中所有字符串值批量替换为默认值-999999?

我之前处理过OCR导出的Excel数据,这种混着乱码字符串的DataFrame确实挺麻烦的。你提到pd.replace()只能处理特定字符串的问题很典型,要批量把所有非数值的字符串统一换成-999999,我给你分享两个实用的方法:

方法1:用pd.to_numeric()强制转换(最推荐)

这个方法是把每一列尝试转换成数值类型,转换失败的内容直接设为NaN,再统一替换成你的默认值。代码简单又高效:

import pandas as pd

# 假设你的DataFrame名为df
for col in df.columns:
    # coerce参数会把无法转成数值的内容(字符串、ASCII乱码等)转为NaN
    df[col] = pd.to_numeric(df[col], errors='coerce').fillna(-999999)

处理完之后,你还可以把所有列统一转成float类型,确保符合你最初的预期:

df = df.astype(float)

方法2:用applymap()自定义判断逻辑

如果需要更灵活的筛选(比如只替换特定格式的字符串),可以遍历每个单元格做判断:

def replace_non_numeric(cell_value):
    # 判断单元格是否是字符串,或者无法识别为数值的内容
    if isinstance(cell_value, str) or not pd.api.types.is_number(cell_value):
        return -999999
    return cell_value

# 对整个DataFrame应用这个函数
df = df.applymap(replace_non_numeric)

这个方法适合你需要自定义过滤规则的场景,比如某些看起来像数值但实际是文本的内容也能覆盖到。

小提示

你可以先跑df.dtypes查看当前各列的数据类型,OCR生成的表格通常会有不少object类型的列(因为混了字符串),处理后再检查一遍,确保所有列都变成数值类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:13:47