我正在寻找计算存储在数据帧中的许多dask
delayed
对象的最佳方法。我不确定是否应该将pandas
数据帧转换为其中包含dask
个对象的delayed
数据帧,或者是否应该对{{ 1}}数据框。
一般而言,我将不胜感激,因为我在跨嵌套的for循环传递compute
对象的逻辑上遇到了麻烦。
pandas
我不能在此数据帧上调用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
我期望的计算输出不会继续。
答案 0 :(得分:0)
您可以将一系列延迟的对象传递到dask.compute
results = dask.compute(*list_of_delayed_objects)
因此,您需要从Pandas数据框中获取列表。您可以使用普通的Python代码来完成此操作。