首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dask中的群滚替代方案

Dask中的群滚替代方案
EN

Stack Overflow用户
提问于 2019-03-21 22:31:53
回答 1查看 734关注 0票数 2

我正在尝试实现一个滚动平均值,每当在标签为'A‘的列中遇到'1’时,它就会重置。

例如,以下功能在Pandas中工作。

代码语言:javascript
复制
import pandas as pd

x = pd.DataFrame([[0,2,3], [0,5,6], [0,8,9], [1,8,9],[0,8,9],[0,8,9], [0,3,5], [1,8,9],[0,8,9],[0,8,9], [0,3,5]])
x.columns = ['A', 'B', 'C']

x['avg'] = x.groupby(x['A'].cumsum())['B'].rolling(2).mean().values

如果我在Dask中尝试一个类似的代码,我会得到以下内容:

代码语言:javascript
复制
import pandas as pd
import dask

x = pd.DataFrame([[0,2,3], [0,5,6], [0,8,9], [1,8,9],[0,8,9],[0,8,9], [0,3,5], [1,8,9],[0,8,9],[0,8,9], [0,3,5]])
x.columns = ['A', 'B', 'C']

x = dask.dataframe.from_pandas(x, npartitions=3)

x['avg'] = x.groupby(x['A'].cumsum())['B'].rolling(2).mean().values
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-189-b6cd808da8b1> in <module>()
      7 x = dask.dataframe.from_pandas(x, npartitions=3)
      8 
----> 9 x['avg'] = x.groupby(x['A'].cumsum())['B'].rolling(2).mean().values
     10 x

AttributeError: 'SeriesGroupBy' object has no attribute 'rolling'

在搜索了Dask文档之后,我还没有找到我想要的东西的实现。

有人能建议以Dask兼容的方式实现这个算法吗?

谢谢您:)

从那时起,我发现了以下代码片段:

代码语言:javascript
复制
df1 = ddf.groupby('cumsum')['x'].apply(lambda x: x.rolling(2).mean(), meta=('x', 'f8')).compute()

按组语法划分的Dask滚动函数

下面是一个经过改编的玩具示例:

代码语言:javascript
复制
import pandas as pd
import dask.dataframe as dd

x = pd.DataFrame([[1,2,3], [2,3,4], [4,5,6], [2,3,4], [4,5,6],  [4,5,6], [2,3,4]])
x['bool'] = [0,0,0,1,0,1,0]
x.columns = ['a', 'b', 'x', 'bool']

ddf = dd.from_pandas(x, npartitions=4)
ddf['cumsum'] = ddf['bool'].cumsum()

df1 = ddf.groupby('cumsum')['x'].apply(lambda x: x.rolling(2).mean(), meta=('x', 'f8')).compute()
df1

这具有正确的功能,但是索引的顺序现在是不正确的。或者,如果一个人知道如何保持索引的顺序,那将是一个合适的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2019-03-27 05:00:49

您可能希望使用重叠_cum_agg方法构建自己的滚动操作(不幸的是,cum_agg没有很好的文档说明)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55290216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档