将函数应用于dask数据帧会导致从args派生的TypeError



我有一段代码,涉及一个函数和一个dask数据帧(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'

有人知道为什么吗?我在网上找不到解决方案,我正在遵循DASK API中的指导方针,所以我不知道为什么会出现错误。args=...应该被正确解析,它们代表函数的附加参数(第一个是groupby()的结果。

就像在panda中一样,您在*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

最新更新