使用numpy.select为DataFrame按两列条件新增列遇问题求助
问题解决
你的代码存在语法和逻辑问题,修正后即可实现需求:
错误点说明
assign是DataFrame的方法,需用**括号()**调用,而非方括号[]np.select参数格式错误:第一个参数是条件列表,第二个是对应值列表,多条件逻辑与需加括号包裹- 条件判断误用赋值符号
=,应使用等于判断== - 逻辑对应关系搞反,且无需额外的
'null'默认值
正确实现方式
方式1:布尔运算实现(更简洁)
利用布尔值转整数的特性(True对应1,False对应0),取反即可满足需求:
df['test'] = ~((df['trs'] == 'iw') & (df['rp'] == 'yu')).astype(int) # 等价写法 df['test'] = ((df['trs'] != 'iw') | (df['rp'] != 'yu')).astype(int)
方式2:正确使用np.select
如果坚持用np.select,需按正确参数格式编写:
import numpy as np conditions = [ (df['trs'] == 'iw') & (df['rp'] == 'yu') ] values = [0] df = df.assign(test=np.select(conditions, values, default=1))
内容的提问来源于stack exchange,提问作者Sonu bose
相关产品推荐
相关产品推荐

