2016-12-13 142 views
1

我已经得到了我的资料两个步骤的过滤过程:熊猫数据框中选择

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().

有一种优雅一次性执行此操作的方式?

回答

1

使用&,敷用()的条件:

data = data[(data['Open']>0) & (data['Volume']>1)] 

你应该分别&|~andornot使用。由于运算符的优先级,括号是必需的。

and,ornot的问题是返回的结果是一个布尔值数组,它不理解如何解释它,因为它期望一个标量值。

这就是为什么你得到错误返回,如果添加any()all()这将返回一个布尔值,它会接受