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

如何基于status列的条件填充reason列的NaN空值

报错原因
  • 你新建的data2使用了SO_STATUS作为列名,和原data中的已有列重名,join操作无法处理重名列且未指定后缀的情况,因此抛出重叠错误。
原代码逻辑问题
  • 空值判断错误:使用== 'NaN'只能匹配字符串格式的"NaN",无法识别pandas/numpy的原生空值,需使用pd.isna()函数做判断。
  • 规则覆盖不全:仅实现了Invoiced状态的填充逻辑,未覆盖Lost Sale状态的对应规则。
  • 未保留原有数据:原有REASON列的非空值没有做保留处理。
正确实现方案

方案1:使用loc定位赋值(可读性更高)

直接在原列上修改,不需要新建DataFrame做join,自动保留原有非空的REASON值:

# 填充Invoiced状态的空REASON
data.loc[(data["SO_STATUS"] == "Invoiced") & pd.isna(data["SO_LOSREASON"]), "SO_LOSREASON"] = "Not Applicable"
# 填充Lost Sale状态的空REASON
data.loc[(data["SO_STATUS"] == "Lost Sale") & pd.isna(data["SO_LOSREASON"]), "SO_LOSREASON"] = "Unknown"

方案2:使用np.where多条件判断

data["SO_LOSREASON"] = np.where(
    (data["SO_STATUS"] == "Invoiced") & pd.isna(data["SO_LOSREASON"]),
    "Not Applicable",
    np.where(
        (data["SO_STATUS"] == "Lost Sale") & pd.isna(data["SO_LOSREASON"]),
        "Unknown",
        data["SO_LOSREASON"] # 不满足填充条件的保留原有值
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:15:03