如何用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替换为目标值-1111astype(float):确保处理后的列保持浮点数值类型
内容的提问来源于stack exchange,提问作者Kavya shree
相关产品推荐
相关产品推荐

