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

如何基于条件将DataFrame指定列的异常值替换为NaN?

批量替换DataFrame日期列中的异常值为NaN

针对你的需求,不需要手动指定行号,直接通过布尔索引就能批量将不符合格式的Birthday值替换为NaN,以下是两种高效实现方式:

方法一:使用df.loc布尔索引

import pandas as pd
import numpy as np

# 创建示例数据
data = {'Age': [20, 21, 19, 18],
        'Name': ['Tom', 'nick', 'krish', 'jack'],
       'Birthday': ["Dec-82", "heidgo", "Mar-84", "ishosdg"]}
df = pd.DataFrame(data)

# 批量替换异常值为NaN
df.loc[~df["Birthday"].str.contains("Dec|Mar", na=False), "Birthday"] = np.nan

方法二:使用pd.Series.mask(更简洁)

import pandas as pd

# 创建示例数据
data = {'Age': [20, 21, 19, 18],
        'Name': ['Tom', 'nick', 'krish', 'jack'],
       'Birthday': ["Dec-82", "heidgo", "Mar-84", "ishosdg"]}
df = pd.DataFrame(data)

# 用mask方法替换异常值
df["Birthday"] = df["Birthday"].mask(~df["Birthday"].str.contains("Dec|Mar", na=False))

关键说明:

  • ~符号表示取反,筛选出不包含Dec或Mar的行
  • na=False参数用于处理原数据中可能存在的空值,避免str.contains抛出错误,确保代码在大规模数据集上稳定运行
  • 两种方法都完全基于条件筛选,无需手动输入行号,适合处理大型数据集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:41:33