如何解决如何按特定行数分组或重新采样-使用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 举报,一经查实,本站将立刻删除。