Python 在熊猫中,如何一次对'n'行进行求和?
给定一个数据帧Python 在熊猫中,如何一次对'n'行进行求和?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,给定一个数据帧 A 0 14 1 59 2 38 3 40 4 99 5 89 6 70 7 64 8 84 9 40 10 30 11 94 12 65 13 29 14 48 15 26 16 80 17 79 18 74 19 69 此数据框有20列。我想一次将n=5行分组并汇总。因此,我的输出如下所示: A 0 250 1 347 2 266 3 328 df.rolling\u sum没有帮助
A
0 14
1 59
2 38
3 40
4 99
5 89
6 70
7 64
8 84
9 40
10 30
11 94
12 65
13 29
14 48
15 26
16 80
17 79
18 74
19 69
此数据框有20列。我想一次将n=5行
分组并汇总。因此,我的输出如下所示:
A
0 250
1 347
2 266
3 328
df.rolling\u sum
没有帮助,因为它不允许您在求和时改变步幅
还有什么其他方法可以做到这一点?假设索引是连续的,您可以对
df.index
执行整数除法,然后按索引分组
对于上面的df
,您可以执行以下操作:
df.index // 5
# Int64Index([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3], dtype='int64')
获得最终答案只需多做一步,使用和:
如果您没有
范围索引
,请先使用,然后使用组。如果您可以使用和而不是序列来管理数据数组(您始终可以再次构造序列),则可以使用
df.set_index(df.index // 5).sum(level=0)
在这种情况下,它返回
array([250, 347, 266, 328])
哦,这是新的。我不知道等级。。。酷…在盲目否决之前,请阅读:问一个标记为重复的问题没有错。同意。而且,这不是完全相同的。它足够近,我不会撤消dup标志。但你的问题是关于金额。另一个问平均数。不同的人会想寻找不同的东西。如果你的问题的措辞最终能引导更多的人找到他们需要的答案,那么你提出了一个有用的问题,即使它是重复的。我还将我的答案添加到了问题@piRSquared,我投了更高的票!谢谢你的支持。@piRSquared我说这个问题肯定是重复的,因为这些问题实际上并不是问如何计算
总和
或平均值
,而是一般来说如何对这些观察结果进行分组(聚合)。但我同意复制品是有用的。如果不是因为Divakar的回答,我甚至可能关闭另一个,作为这个的复制品,因为短语“一次n行”似乎更常见。无论如何,我不会对反对票做太多解读,因为这里的每个人都有自己的标准,不可能跟得上所有人。
np.add.reduceat(df.A.values, np.arange(0, df.A.size, 5))
array([250, 347, 266, 328])