2016-04-28 32 views
0

在大熊猫时间序列可以说我有这个数据汇总给出的窗口大小

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}

+0

你的意思是{3,7,11,15}?另外如果有奇数的元素呢?你打算如何添加它们? – Kevad

回答

1

试试这个:

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

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') 
0

可以使用熊猫rolling mean并得到它像下面这样: 如果n是您的间隔时间:

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}