python-3.x - 计算存储在数据框中的延迟对象
问题描述
我正在寻找计算dask
delayed
存储在数据框中的许多对象的最佳方法。我不确定是否pandas
应该将数据框转换为其中dask
包含delayed
对象的数据框,或者是否compute
应该对数据框的所有值调用调用pandas
。
一般来说,我会很感激任何建议,因为我在delayed
通过嵌套的 for 循环传递对象的逻辑上遇到了麻烦。
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()
而且我期望的计算输出不会继续。
解决方案
您可以将延迟对象列表传递到dask.compute
results = dask.compute(*list_of_delayed_objects)
所以你需要从你的 Pandas 数据框中获取一个列表。这是您可以使用普通 Python 代码执行的操作。
推荐阅读
- docker - rabbitmq-server - 与非 root 用户分离被阻塞
- python - 如何创建检查点并从检查点或保存的 GAN 模型中恢复权重?
- angular - 为我的项目创建类似 jql 的解析器的问题
- c++ - 制作地板图案
- python - pandas:多级列数据框 - 如何更改特定级别的名称?
- wordpress - Woocommerce如何将标题属性添加到迷你购物车上产品名称的锚标记
- android - 应用程序更新未显示在 Google Play 商店中
- r - as.data.frame.default(x[[i]], optional = TRUE) 中的错误:无法将类“函数”强制转换为 data.frame
- javascript - 用于测验应用程序的 Django 表单(如何在提交后禁用表单)
- excel - 获取与excel中日期值匹配的列索引