如何使用np.where或np.select一行代码实现Pandas多列条件赋值
首先明确结论:你给出的两种np.select写法都不可行,正确的一行写法有以下两种方案:
错误写法的问题说明
- 语法错误:
np.select是函数,必须用圆括号()调用,你写的方括号[]属于索引语法,会直接抛出语法错误。 - 逻辑错误:
np.select是为单列多条件分支赋值设计的,返回值是长度等于行数的一维数组,无法同时输出两个列的结果,不符合你的使用场景。
可行方案1:用Pandas自带的where方法(最适配你的需求)
Pandas的where方法规则是「满足条件保留原值,不满足用填充值替换」,刚好和你的需求匹配,直接对目标多列操作即可:
df[['Valindex0','RB']] = df[['Valindex0','RB']].where(condition, None)
可行方案2:直接用np.where对多列批量操作
如果习惯用numpy的where,直接把多列作为输入传入即可,会自动广播适配多列的形状:
df[['Valindex0','RB']] = np.where(condition, df[['Valindex0','RB']], None)
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

