我有这样的代码,它调用一个@delayed函数,该函数以N个dask数据格式作为输入,并返回一个dataframe作为输出。
有两个问题:(1)函数内部的数据类型是熊猫而不是达斯克;(2)当我得到函数的结果时,它也是熊猫而不是达斯克。
作为熊猫数据输入而不是达克,@delayed背后的逻辑是什么?我只需要和达克数据处理一起工作。
这是代码:
df = pd.DataFrame({
'height': [6.21, 5.12, 5.85, 5.78, 5.98],
'weight': [150, 126, 133, 164, 203]
})
df_dask = dd.from_pandas(df, npartitions=2)
@delayed
def some_function(*b):
print('type b[0]: ' + str(type(b[0])) )
ddf = b[0]
return ddf
ddfout = some_function(df_dask, df_dask, df_dask)
computed = ddfout.compute()
>>> type b[0]: <class 'pandas.core.frame.DataFrame'> # this should be dask dataframe
type(computed)
>>> pandas.core.frame.DataFrame发布于 2022-03-04 20:01:24
获取dataframe ddf列ddf的方法是:
ddf[0]这里没有延迟的必要,API已经为支持的所有熊猫方法(大多数)提供了延迟操作。
延迟是用于对常量和其他延迟值的任意操作,而不是像dataframe这样的dask集合。
参见文档:https://docs.dask.org/en/stable/delayed-best-practices.html#don-t-call-dask-delayed-on-other-dask-collections;您可能需要ddf.map_partitions。
https://stackoverflow.com/questions/71356468
复制相似问题