2016-11-16 54 views
1

dask中根据多个条件选择行的最高性能方法是什么?在熊猫中,像基于dask中的多个条件的行选择?

df[df.A > 0 & df.B <= 10] 

确实有效。然而,在dask中,这将返回一个错误。我想出了迄今为止最好的解决办法是使用numpys logical_and()功能:

df[np.logical_and(df.A > 0, df.B <= 10)] 

然而,这是超级慢,因为它会触发一些计算(我认为)。有没有更多的高性能方式来选择dask基于多个条件的行?

+2

上面也不会在熊猫工作,你需要括号:''DF [(df.A> 0)&(df.B < = 10)]' – joris

回答

0

尝试

df[df.A > 0][df.B <= 10] 

这相当于逻辑与

+0

这不会产生所需的结果,因为第二个布尔索引由于第一个布尔索引而使数据帧更短。 – joris

+0

因为你不重新索引,这相当于'df [(df.A> 0)&(df.B <= 10)]' –

+0

啊,是的,没错。但是性能明智(并且在使用dask的情况下),您将需要'df [(df.A> 0)&(df.B <= 10)]'情况来避免重新索引。 – joris

1

由于@joris的提示,括号在正确的位置工作。因此,在DASK溶液是类似/等同于大熊猫溶液:

df[(df.A > 0) & (df.B <= 10)]