首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在给定窗口大小的Pandas中聚合时间序列

在给定窗口大小的Pandas中聚合时间序列
EN

Stack Overflow用户
提问于 2016-04-28 13:24:54
回答 2查看 98关注 0票数 0

假设我有这些数据

代码语言:javascript
运行
复制
a = pandas.Series([1,2,3,4,5,6,7,8])

a
Out[313]: 
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
dtype: int64

我希望聚合数据一次对数据n行进行分组并对它们进行汇总。因此,如果n=2,新的系列将看起来像{3,7,11,15}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-28 13:45:51

试试这个:

代码语言:javascript
运行
复制
In [39]: a.groupby(a.index//2).sum()
Out[39]:
0     3
1     7
2    11
3    15
dtype: int64

In [41]: a.index//2
Out[41]: Int64Index([0, 0, 1, 1, 2, 2, 3, 3], dtype='int64')

n=3

代码语言:javascript
运行
复制
In [42]: n=3

In [43]: a.groupby(a.index//n).sum()
Out[43]:
0     6
1    15
2    15
dtype: int64

In [44]: a.index//n
Out[44]: Int64Index([0, 0, 0, 1, 1, 1, 2, 2], dtype='int64')
票数 1
EN

Stack Overflow用户

发布于 2016-04-28 23:18:42

您可以使用熊猫滚动平均值并获得如下所示:如果n是您的间隔:

代码语言:javascript
运行
复制
sums = list(a.rolling(n).sum()[n-1::n])

# Optional !!!
rem = len(a)%n
if rem != 0:
    sums.append(a[-rem:].sum())

如果数据可以正确地划分为组,则第一行将完美地添加行,否则,我们还可以添加剩余的和(取决于您的首选项)。例如,在上述情况下,如果是n=3,那么您可能希望得到{6, 15, 15}{6, 15}。以上代码用于前一种情况。跳过可选部分只会给您提供{6, 15}

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

https://stackoverflow.com/questions/36916092

复制
相关文章

相似问题

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