我正在尝试执行以下矢量化 if-else 的等效操作,但找不到任何适用于 dask 的内容。(dask.array.where总是返回NotImplemented)
实现这一目标的最佳方法是什么?
np.where(df['columne'] > 0, 0, 1)
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)
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |