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

如何用Python Pandas将数值列中的字符串替换为指定常量?

Pandas实现:将数值列中的字符串值统一替换为-1111

针对包含100余列的数据集,需要清洗其中数值列(numeric/float类型)中混入的字符串值(如"OVG""fail""testing"等),统一替换为固定值-1111,以下是具体实现方案:

核心思路

对每一列尝试转换为数值类型,无法转换的字符串会被强制转为NaN,随后将所有NaN替换为目标值-1111,最终保留列的数值类型。同时通过阈值判断避免误处理纯文本列。

完整代码

import pandas as pd

# 加载数据集(根据实际文件格式调整,比如read_excel、read_parquet等)
df = pd.read_csv("your_dataset.csv")

# 遍历所有列,处理数值列中的字符串值
for col in df.columns:
    # 尝试将列转换为float,无法转换的内容设为NaN
    converted_col = pd.to_numeric(df[col], errors='coerce')
    # 仅当转换后有效数值占比超过阈值(避免误处理纯文本列),才更新原列
    # 阈值可根据数据集实际情况调整,示例设为0.8
    if converted_col.notna().mean() > 0.8:
        df[col] = converted_col.fillna(-1111).astype(float)

# 保存清洗后的数据集
df.to_csv("cleaned_dataset.csv", index=False)

代码说明

  • pd.to_numeric(..., errors='coerce'):将列内容转换为数值,无法转换的字符串会被转为NaN
  • 阈值判断:过滤掉纯文本列,避免把本应是字符串的列强制转为数值列
  • fillna(-1111):将所有因字符串转换产生的NaN替换为目标值-1111
  • astype(float):确保处理后的列保持浮点数值类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:33:22