2016-11-16 29 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)]