如何使用np.where多条件将Pandas列非空值合并到新列并填充分类值
解决方法
报错原因
你使用np.where的嵌套语法错误:np.where必须传入三个参数,分别为判断条件、条件为真时的返回值、条件为假时的返回值。你在第一层np.where的第三个参数位置直接传入了(df['B']=='user2','user2','user3')三元组,三个元素和前面长度为544的布尔数组形状不匹配,因此触发报错。
修改方案
方案1:修正嵌套np.where写法
多层判断需要嵌套np.where,代码如下:
df['C'] = np.where(df['A'] == 'user1', 'user1', np.where(df['B'] == 'user2', 'user2', 'user3'))
方案2:更简洁的Pandas原生写法
因为你提到A、B两列的有效值无重叠,直接用fillna拼接两列再填充默认值即可,可读性和效率更高:
df['C'] = df['A'].fillna(df['B']).fillna('user3')
两种方案都可以完全匹配你提供的样本数据预期结果。
内容的提问来源于stack exchange,提问作者one_random_python_learner
相关产品推荐
相关产品推荐

