我的数据有两步过滤流程:
data = data[data['Volume']>1]
data = data[data['Open']>0]
我试着这样做:
data = data[data['Open']>0 and data['Volume']>1]
但我得到ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有一种优雅的方式可以一次性执行此操作吗?
答案 0 :(得分:1)
使用&
并使用()
包装条件:
data = data[(data['Open']>0) & (data['Volume']>1)]
您应分别对&
,|
和~
使用and
,or
和not
。由于运算符优先级,括号是必需的。
and
,or
和not
的问题在于返回的结果是布尔数组,它不理解如何解释,因为它期望标量值。
这就是你收到错误的原因,如果你添加any()
或all()
这会返回一个它接受的布尔值