Python 如何在第二列定义的固定间隔内对一列的元素求和?

Python 如何在第二列定义的固定间隔内对一列的元素求和?,python,arrays,series,Python,Arrays,Series,我有两列a和B的DF,我想根据a的三个不同值平均B元素: A= [id1 id1 id1 id1 id2 id2 id2 id2 id3 id3 id3 id4 id4 id4 id4] B=[1 2 3 4 4 2 1 1 1 3 3 4 4 4] 对于A的每个值,我想求B的两个值之和,每次我用1个值移位意味着: 对于id1: 第一个值必须是1+2 第二个值必须是2+3 第三个值必须是3+4 等 对于id2 第一个值必须是4+2 第二个值必须是2+1 等等。如果您在数据帧中有此项,以及a列和

我有两列a和B的DF,我想根据a的三个不同值平均B元素:

A= [id1 id1 id1 id1 id2 id2 id2 id2 id3 id3 id3 id4 id4 id4 id4]
B=[1 2 3 4 4 2 1 1 1 3 3 4 4 4]
对于A的每个值,我想求B的两个值之和,每次我用1个值移位意味着: 对于id1: 第一个值必须是
1+2
第二个值必须是
2+3
第三个值必须是
3+4
等 对于id2 第一个值必须是
4+2
第二个值必须是
2+1

等等。

如果您在数据帧中有此项,以及a列和B列,则可以执行以下操作:

 df.groupby('A')['B'].sum()
假设您的值(a1,a2,…)是数字

您可以使用
df.groupby
获取给定a的所有“B”值的平均值,然后可以执行窗口大小为3的滚动求和。您必须放弃数据帧中的最后两行,以避免滚动窗口造成的任何“边缘”效应

import pandas as pd


df = pd.DataFrame({'A': [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5], 
                   'B': [1,2,3,1,2,3,1,2,3,1,2,3,1,2,3]})

mean_df = df.groupby('A')['B'].mean()

# perform the sum, reversing the order to do a forward sum
rolling_sum = mean_df.iloc[::-1].rolling(3, min_periods=0).sum().iloc[::-1]

那么移位呢?输出应该基于移位吗?我需要3个值的总和,而不是我在问题中已经提到的移位。对不起,你的问题对我来说没有意义。问题是窗口的大小未知。我将编辑我的问题以使其更清晰。我想我了解你想要什么。例如,是否要对“A”=1的“B”的所有值进行平均,然后对“A”=2的“B”的所有值进行平均,依此类推。。。那么你想计算这些平均值之和的滚动总和吗?如果上面的评论是正确的,我已经编辑了答案,以反映我现在认为的问题。我认为三栏更好,我会编辑更多我的问题。对不起,你的编辑没有使问题对我更清楚。