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

Pandas中np.where逻辑错误排查:多列条件与固定列约束问题

问题原因及解决方案

问题根源:逻辑运算符优先级错误

Python中,&(按位与)的优先级高于|(按位或)。你的代码实际执行的逻辑是:
(df['01']>0) | (df['02']>0) | (df['03']>0) | [(df['04']>0) & (df['spend']==0)]
这就导致只要01/02/03任意一列大于0,哪怕spend>0,整个条件也会被判定为True,进而标记为1,完全偏离了你原本的需求。

修正后的代码

把所有“01-04任意一列大于0”的条件用括号整体包裹,再和“spend等于0”的条件做与运算:

import numpy as np
df['indicator'] = np.where(
    ((df['01'] > 0) | (df['02'] > 0) | (df['03'] > 0) | (df['04'] > 0)) 
    & (df['spend'] == 0),
    1, 0
)

修正后的逻辑说明

  1. 先判断01、02、03、04是否至少有一列大于0
  2. 再判断spend是否等于0
  3. 只有两个条件同时满足时,才标记为1,否则为0,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:15:32