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

Pandas判断字符串含指定子串时字符串'nan'未被转为np.nan问题

问题原因与修复方案

核心问题

  1. 匹配逻辑缺陷:原代码用xx in str(r)做包含匹配,一方面会误把包含-或nan的正常内容(比如nano、1-3折)转为缺失值,另一方面没有做大小写、空白的兼容处理,无法匹配NaN、NAN、 nan 这类变体的字符串nan,这就是你没有成功替换目标值的核心原因。
  2. 类型兼容问题:如果目标列是字符串类型,就算你写入了np.nan,部分pandas操作场景下可能会被自动转回字符串nan,建议清理完成后统一转成数值类型。

修复代码

import numpy as np
import pandas as pd

# 自定义清理逻辑
def clean_val(raw):
    s = str(raw).strip().lower()
    if s in ('-', 'nan'):
        return np.nan
    return s.replace(',', '')

# 应用到目标列
target_cols = ['sale_price','mrp', 'discount', 'ratings', 'stars']
df[target_cols] = df[target_cols].applymap(clean_val)

# 可选:统一转为数值类型,进一步保证缺失值格式正确
df[target_cols] = df[target_cols].apply(pd.to_numeric, errors='coerce')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:15:01