Применение функции к кадру данных dask приводит к возникновению ошибки TypeError из аргументов - PullRequest
0 голосов
/ 27 марта 2020

У меня есть фрагмент кода, включающий функцию и dask dataframe (df1). Фрейм данных уже существует до функции, поэтому, когда я делаю meta=df1.dtypes, я вызываю существующие типы. Это код:

def my_function(group, arg1, arg2, arg3):
    # some operations

df1 = df1.groupby("Sequence").apply(my_function, args=[arg1, arg2, arg3], meta=df1.dtypes)

Возвращает следующую ошибку:

TypeError: my_function() got an unexpected keyword argument 'args'

Кто-нибудь знает, почему? Я не могу найти решение в Интернете, и я следую рекомендациям API DASK, поэтому я не понимаю, почему я получаю ошибку. args=... должен быть правильно проанализирован, и он представляет дополнительные аргументы для функции (первый из которых является результатом groupby().

1 Ответ

1 голос
/ 27 марта 2020

Как и в pandas, вы предоставляете дополнительные аргументы в *args, а не аргумент с именем args.

In [14]: df = dask.datasets.timeseries()

In [15]: def myfunc(x, arg1, arg2, arg3):
    ...:     return x.mean()
    ...:

In [16]: df.groupby("id")[['x', 'y']].apply(myfunc, meta={'x': 'f8', 'y': 'f8'}, arg1=1, arg2=2, arg3=3)
Out[16]:
Dask DataFrame Structure:
                      x        y
npartitions=30
                float64  float64
                    ...      ...
...                 ...      ...
                    ...      ...
                    ...      ...
Dask Name: myfunc, 303 tasks
...