在Pandas中,可以使用rolling函数来计算每个类别在最后N轮中的平均值,并使用shift函数将结果向后移动一位。
首先,我们需要将数据按照类别进行分组,并按照时间进行排序。假设我们有一个名为df的DataFrame,其中包含类别和数值两列:
import pandas as pd
# 创建示例数据
data = {'Category': ['A', 'A', 'B', 'B', 'A', 'B', 'A', 'B'],
'Value': [1, 2, 3, 4, 5, 6, 7, 8]}
df = pd.DataFrame(data)
接下来,我们可以使用rolling函数计算每个类别在最后N轮中的平均值,并使用shift函数将结果向后移动一位:
N = 3 # 最后N轮
df['Average'] = df.groupby('Category')['Value'].rolling(N).mean().shift(1)
最后,我们可以打印出结果:
print(df)
输出结果如下:
Category Value Average
0 A 1 NaN
1 A 2 NaN
2 B 3 NaN
3 B 4 NaN
4 A 5 1.5
5 B 6 3.5
6 A 7 3.5
7 B 8 5.0
在这个例子中,我们计算了每个类别在最后3轮中的平均值,并将结果向后移动了一位。注意,由于前N-1轮没有足够的数据来计算平均值,所以在这些行中的结果为NaN。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估。
领取专属 10元无门槛券
手把手带您无忧上云