tl; dr:
是否可以同时并行.set_index()
处理多个 Dask 数据帧?或者,是否可以懒惰地处理几个 Dask Dataframe,从而导致同时并行设置索引?.set_index()
这是场景:
- 我有几个时间序列
- 每个时间序列存储的是几个
.csv
文件。每个文件都包含与特定日期相关的数据。此外,文件分散在不同的文件夹中(每个文件夹包含一个月的数据) - 每个时间序列都有不同的采样率
- 所有时间序列都有相同的列。都有一列,其中包含
DateTime
等。 - 数据太大,无法在内存中处理。这就是我使用 Dask 的原因。
- 我想将所有时间序列合并到一个 DataFrame 中,由
DateTime
. 为此,我需要首先将resample()
每个时间序列设置为一个共同的采样率。然后.join()
是所有时间序列。 .resample()
只能应用于索引。因此,在重新采样之前,我需要.set_index()
在每个时间序列的 DateTime 列上。- 当我
.set_index()
在一个时间序列上询问方法时,计算立即开始。这导致我的代码被阻止并等待。此时,如果我检查我的机器资源使用情况,我可以看到许多内核正在使用,但使用率没有超过 ~15%。这让我认为,理想情况下,我可以将该.set_index()
方法同时应用于多个时间序列。
达到上述情况后,我尝试了一些不优雅的解决方案来并行.set_index()
处理多个时间序列上的方法应用(例如 create a multiprocessing.Pool
),但均未成功。在提供更多详细信息之前,是否有解决上述情况的干净方法?在实施 Dask 时是否考虑过上述场景?
或者,可以.set_index()
偷懒吗?如果.set_index()
可以懒惰地应用方法,我将使用上述步骤创建一个完整的计算图,最后,所有内容都将同时并行计算(我认为)。