熊猫数据框选择

时间:2016-12-13 13:19:54

标签: python pandas

我的数据有两步过滤流程:

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 个答案:

答案 0 :(得分:1)

使用&并使用()包装条件:

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

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

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

这就是你收到错误的原因,如果你添加any()all()这会返回一个它接受的布尔值