【发布时间】:2019-08-12 20:09:30
【问题描述】:
我正在寻找计算存储在数据框中的许多 dask delayed 对象的最佳方法。我不确定是否应该将 pandas 数据帧转换为带有 delayed 对象的 dask 数据帧,或者是否应该对 pandas 数据帧的所有值调用 compute 调用。
一般来说,我会很感激任何建议,因为在嵌套 for 循环中传递 delayed 对象的逻辑有问题。
import numpy as np
import pandas as pd
from scipy.stats import hypergeom
from dask import delayed, compute
steps = 5
sample = [int(x) for x in np.linspace(5, 100, num=steps)]
enr_df = pd.DataFrame()
for N in sample:
enr = []
for i in range(20):
k = np.random.randint(1, 200)
enr.append(delayed(hypergeom.sf)(k=k, M=10000, n=20, N=N, loc=0))
enr_df[N] = enr
如果不对所有单元格应用该函数,我就无法在此数据帧上调用 compute,如下所示:enr_df.applymap(compute)(我相信在每个值上单独调用 compute)。
但是,如果我转换为 dask 数据帧,我想要计算的 delayed 对象将分层在 dask 数据帧结构中:
enr_dd = dd.from_pandas(enr_df, npartitions=1)
enr_dd.compute()
我期望的计算输出没有继续。
【问题讨论】:
标签: python-3.x pandas dask dask-delayed