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

如何在pandas中判断多列非空并按指定规则生成新列

首先注意你现有代码的小问题:df['A'].notnull是方法引用,需要加括号调用写成df['A'].notnull()才能得到正确的布尔判断序列。

你可以通过嵌套np.where或者使用np.select实现多条件判断,两种写法如下:

写法1:嵌套np.where(贴合你现有代码逻辑)

df['D'] = np.where(
    df['A'].notnull(),
    df['A'],
    np.where(
        df['B'].notnull() & df['C'].notnull(),
        df['B'] + df['C'],
        np.nan
    )
)

逻辑分层:先判断A非空直接取A值,A为空时再判断B、C是否同时非空,满足则拼接两列值,否则赋值NaN。

写法2:np.select(更适合多条件拓展,可读性更高)

# 提前定义所有条件和对应取值
conditions = [
    df['A'].notnull(),
    df['B'].notnull() & df['C'].notnull()
]
values = [
    df['A'],
    df['B'] + df['C']
]

df['D'] = np.select(conditions, values, default=np.nan)

如果后续需要新增判断规则,只需要在conditions和values列表里对应添加条目即可,维护成本更低。

两种写法运行后都可以得到你预期的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:45:03