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

如何在Pandas中为np.where语句添加多条件生成新列df["c"]?

解决DataFrame新列条件赋值的问题

我来帮你搞定这个逻辑!你之前的代码已经覆盖了前两个条件,但缺了a≤50时c=a这个优先级最高的规则,我们可以通过两种方式轻松补上:

方法1:嵌套np.where(直观易懂)

这种方式把条件按优先级分层,先处理a≤50的情况,再处理a>50的分支:

import numpy as np
import pandas as pd

# 构造你的示例数据
data = {'a': [100, 30, 90, 200], 'b': [90, 117, 99, 94]}
df = pd.DataFrame(data)

# 实现完整条件逻辑
df['c'] = np.where(
    df['a'] <= 50,  # 第一个判断:a≤50时取a
    df['a'],
    # 第二个分支:a>50时,判断b是否在(a±0.5a)范围内
    np.where(df.eval("0.5 * a <= b <= 1.5 * a"), df['a'], df['b'])
)

方法2:合并逻辑表达式(更简洁)

我们可以把所有需要取a的条件合并成一个逻辑表达式:要么a≤50,要么a>50且b在(a±0.5a)范围内,剩下的情况取b:

df['c'] = np.where(
    (df['a'] <= 50) | df.eval("0.5 * a <= b <= 1.5 * a"),
    df['a'],
    df['b']
)

验证结果

运行上面任意一段代码后,你都会得到预期的输出:

abc
010090100
13011730
2909990
32009494

两种方法都能完美满足你的三个条件,你可以根据自己的习惯选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:52:53