假设我有这些数据
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}
。
发布于 2016-04-28 13:45:51
试试这个:
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')
发布于 2016-04-28 23:18:42
您可以使用熊猫滚动平均值并获得如下所示:如果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}
。
https://stackoverflow.com/questions/36916092
复制相似问题