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

如何在含NaN的Pandas列中执行条件二元替换

Pandas DataFrame指定值替换解决方案

针对需求:保留"A"、将所有非NaN的非"A"值替换为"D"、NaN保持不变,以下是几种高效实现方法:

方法一:结合np.where与pd.notna

通过条件判断精准筛选需要替换的行,避免修改NaN:

import numpy as np
import pandas as pd

df["col1"] = np.where((pd.notna(df["col1"])) & (df["col1"] != "A"), "D", df["col1"])

逻辑:仅当值**非空且不等于"A"**时替换为"D",其余情况(NaN或"A")保留原内容。

方法二:使用df.loc直接定位修改

利用Pandas的索引定位功能,直接修改目标行:

df.loc[(df["col1"].notna()) & (df["col1"] != "A"), "col1"] = "D"

逻辑:通过布尔索引筛选出需要替换的行,直接赋值为"D",不会影响空值和"A"。

方法三:正则表达式配合replace

用正则匹配所有非"A"的非空字符串进行替换:

df["col1"] = df["col1"].replace(r'^(?!A$).+', "D", regex=True)

逻辑:正则^(?!A$).+匹配所有不是单个"A"的非空值,将其替换为"D",NaN因不匹配正则而保留。

以上三种方法均无需枚举所有非"A"值,适用于非"A"值种类较多的实际场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:45:37