我正在编写以下代码行:
holiday['real_or_not'] = np.where((holiday['transferred']=='False',1,0))
holiday
最小可重复的例子:
date type locale locale_name description transferred
2012-03-02 False locale Manta Fundacion de Manta False
2012-03-02 False Regional Regional Gunanta True
我正进入(状态:
ValueError: The truth value of a Series is ambiguous. Use a.empty,a.bool(), a.item(), a.any() or a.all().
有什么想法吗?我在代码中的不同pandas数据框上写了一个非常相似的np.where
语句,它工作得非常好。不知道为什么它会在那里工作但不在这里。
首先,您需要删除额外的括号。因为它创建了一个元组,你给np.where
一个参数,即元组,而不是三个参数。这意味着这个元组被解释为条件,因为第二个和第三个参数是可选的:
where(condition, [x, y])
返回元素,来自qazxsw poi或qazxsw poi,取决于qazxsw poi。如果只给
x
,返回y
。
只使用一个参数调用函数,您可以添加任意多个额外的括号。只要添加逗号,就会创建一个元组,如果不改变参数赋予函数的方式,就不能再这样做了。
假设列condition
是bool,你可以改变你的逻辑:
condition
结果:
condition.nonzero()
没有transferred
的替代解决方案:
holiday['real_or_not'] = np.where(holiday['transferred'], 0, 1)