Dask Dataframe больше, чем задержанное число - PullRequest
1 голос
/ 13 февраля 2020

Есть ли способ сделать это, но с пороговым значением в качестве числа с задержкой?

import dask
import pandas as pd
import dask.dataframe as dd

threshold = 3

df = pd.DataFrame({'something': [1,2,3,4]})
ddf = dd.from_pandas(df, npartitions=2)

ddf[ddf['something'] >= threshold]

Что если threshold равно:

threshold = dask.delayed(3)

Атм, это дает мне:

TypeError('Truth of Delayed objects is not supported')

Я хочу сохранить ddf в качестве кадра данных dask, а не превращать его в pandas кадр данных. Интересно, были ли формы комбинатора, которые также принимали задержанные значения.

1 Ответ

2 голосов
/ 13 февраля 2020

Dask не может знать, что конкретное значение в этом объекте Delayed является целым числом, поэтому нет способа узнать, что с ним делать в операции (align, broadcast, et c.)

Если вы используете что-то вроде массива размера 0, все будет хорошо

In [32]: df = dd.from_pandas(pd.DataFrame({"A": [1, 2, 3, 4]}), 2)

In [33]: threshold = da.from_array(np.array([3]))[0]

In [34]: df.A > threshold
Out[34]:
Dask Series Structure:
npartitions=2
0    bool
2     ...
3     ...
Name: A, dtype: bool
Dask Name: gt, 8 tasks

In [35]: df[df.A > threshold].compute()
Out[35]:
   A
3  4
...