Dask @delayed 将数据帧转换为 pandas
Dask @delayed converts dataframes to pandas
我有这段代码调用一个 dask @delayed
函数,该函数将 N 个 dask 数据帧作为输入,returns 一个 dask 数据帧作为输出。
有两个问题 (1) 函数内部数据帧的类型是 pandas 而不是 dask,以及 (2) 当我得到函数的结果时,它也是 pandas而不是呆呆的。
@delayed
获取输入 pandas 数据帧而不是 dask 背后的逻辑是什么?我只需要使用 dask 数据帧。
这是代码:
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
获取 dask 数据框 ddf
列 0
的方法是:
ddf[0]
这里不需要 delayed,API 已经对所有支持的 pandas 方法(大部分)提供了惰性操作。
Delayed 用于对常量和其他延迟值进行任意操作,不是 像数据帧这样的 dask 集合。
参见文档:https://docs.dask.org/en/stable/delayed-best-practices.html#don-t-call-dask-delayed-on-other-dask-collections;你可能想要ddf.map_partitions
。
我有这段代码调用一个 dask @delayed
函数,该函数将 N 个 dask 数据帧作为输入,returns 一个 dask 数据帧作为输出。
有两个问题 (1) 函数内部数据帧的类型是 pandas 而不是 dask,以及 (2) 当我得到函数的结果时,它也是 pandas而不是呆呆的。
@delayed
获取输入 pandas 数据帧而不是 dask 背后的逻辑是什么?我只需要使用 dask 数据帧。
这是代码:
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
获取 dask 数据框 ddf
列 0
的方法是:
ddf[0]
这里不需要 delayed,API 已经对所有支持的 pandas 方法(大部分)提供了惰性操作。
Delayed 用于对常量和其他延迟值进行任意操作,不是 像数据帧这样的 dask 集合。
参见文档:https://docs.dask.org/en/stable/delayed-best-practices.html#don-t-call-dask-delayed-on-other-dask-collections;你可能想要ddf.map_partitions
。