numpy where 的 dask 等价物是什么?

use*_*897 1 python dask

我正在尝试执行以下矢量化 if-else 的等效操作,但找不到任何适用于 dask 的内容。(dask.array.where总是返回NotImplemented

实现这一目标的最佳方法是什么?

np.where(df['columne'] > 0, 0, 1)

Nic*_*ker 5

Dask 的等价物numpy.where dask.array.where

举个例子:

import pandas as pd
import numpy as np
?
import dask.array as da
import dask.dataframe as dd
?
df = pd.DataFrame([-1,2,-4,5,-10], columns=['a'])
ddf = dd.from_pandas(df, 2)
print(df)
    a
0  -1
1   2
2  -4
3   5
4 -10
Run Code Online (Sandbox Code Playgroud)
da.where(ddf['a'] > 0, 0, 1).compute()
array([1, 0, 1, 0, 1])
Run Code Online (Sandbox Code Playgroud)

你也可以从你的评论中做等效的例子。

da.where(ddf['a'] > 0, np.nan, 5*ddf['a']).compute()
array([ -5.,  nan, -20.,  nan, -50.])
Run Code Online (Sandbox Code Playgroud)

您可能需要升级您的库版本,安装其他库(例如 dask.array),或者如果您的特定示例无法正常工作,请提供更多信息。这适用于安装的以下 Dask 库:

dask                      2.10.0                     py_0  
dask-core                 2.10.0                     py_0
Run Code Online (Sandbox Code Playgroud)