问题描述
我正在尝试将dask数据帧降为任意x行数。
例如,如果我使用日期时间作为索引,则可以使用:
df = df.resample('1h').ohlc()
但是我不想按日期时间进行重新采样,我想按固定数量的行进行重新采样...类似
df = df.resample(rows=100).ohlc()
- 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 (将#修改为@)