在大熊猫时间序列可以说我有这个数据汇总给出的窗口大小
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}
。
在大熊猫时间序列可以说我有这个数据汇总给出的窗口大小
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}
。
试试这个:
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')
可以使用熊猫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}
。
你的意思是{3,7,11,15}?另外如果有奇数的元素呢?你打算如何添加它们? – Kevad