Что такое суточный эквивалент numpy где? - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь сделать эквивалент следующего векторизованного if-else, но не смог найти ничего, что сработало бы для dask. (dask.array.where всегда возвращает NotImplemented)

Каков наилучший способ выполнить sh это?

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

1 Ответ

2 голосов
/ 31 января 2020

Эквивалент 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
da.where(ddf['a'] > 0, 0, 1).compute()
array([1, 0, 1, 0, 1])

Вы также можете сделать эквивалентный пример из вашего комментария.

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

Возможно, вам потребуется обновить версии библиотеки, установить дополнительные библиотеки (например, dask.array) или предоставить дополнительную информацию, если ваш указанный пример c не работает. Это работает со следующими установленными библиотеками Dask:

dask                      2.10.0                     py_0  
dask-core                 2.10.0                     py_0
...