如何按特定行数分组或重新采样-使用DaskPython

问题描述

我正在尝试将dask数据帧降为任意x行数。

例如,如果我使用日期时间作为索引,则可以使用:

df = df.resample('1h').ohlc()

但是我不想按日期时间进行重新采样,我想按固定数量的行进行重新采样...类似

df = df.resample(rows=100).ohlc()

我做了很多搜索,发现了这三个旧的SO页面

  • This one建议:
    • df.groupby(np.arange(len(df))//x),其中x =行数。
    • pd.DataFrame(df.values.reshape(-1,2,df.shape[1]).mean(1)),但我很难理解这一点。
    • pd.DataFrame(np.einsum('ijk->ik',df.values.reshape(-1,df.shape[1]))/2.0),但我也很难理解这一点。
  • This one再次建议df.groupby(np.arange(len(df))//x)
  • This one建议使用df_sub = df.rolling(x).mean()[::x],但它表示这很浪费,而且似乎没有针对dask进行优化。

最好,最快的选择似乎是df.groupby(np.arange(len(df))//x),并且在Pandas中效果很好。但是,当我在dask中尝试时,会得到:ValueError: Grouper and axis must be same length

如何使用dask按行数重新采样?

我有以下数据框:

  • 标准索引(例如1,3,4,5 ...,n)
  • 我可以潜在地将Datetime值用作索引(尽管我不一定要使用)
  • 非标准长度(即,其中一些具有偶数行,而另一些具有奇数行)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)