在 Pandas 中,有一个方法 DataFrame.shift(n) 可以将数组的内容相对于索引移动 n 行,类似于 np.roll(a, n)。我似乎找不到与 Dask 一起使用类似行为的方法。我意识到使用 Dask 的分块系统可能难以管理行移位之类的事情,但我不知道有更好的方法将每一行与后续行进行比较。
我想做的是:
import numpy as np
import pandas as pd
import dask.DataFrame as dd
with pd.HDFStore(path) as store:
data = dd.from_hdf(store, 'sim')[col1]
shifted = data.shift(1)
idx = data.apply(np.sign) != shifted.apply(np.sign)
为了创建一个布尔系列,指示数据中符号变化的位置。(我知道该方法还会捕获从有符号值到零的变化)然后我将使用布尔系列来索引不同的 Dask 数据帧以进行绘图。