有一组数据[12, 13, 15, 16, 14, 11, 19, 24, 28, 25],我想要每三项/每五项求一次和,不足三项/五项的设为NaN,像下面这样,有没有什么办法快速得到sum_3、sum_5两列的值
num sum_3 sum_5
0 12 NaN NaN
1 13 NaN NaN
2 15 40 NaN
3 16 44 NaN
4 14 45 70
5 11 41 69
6 19 44 75
7 24 54 84
8 28 71 96
9 25 77 107
可以用前n项和Sn减,a[1]+a[2]+a[3]=S[3]-S[0]。
计算Sn利用S[n]=S[n-1]+a[n],一次循环
找到一个新的办法,可以使用rolling(),记录一下:
data = pd.DataFrame({"num": [12, 13, 15, 16, 14, 11, 19, 24, 28, 25]})
data['sum_3'] = data['num'].rolling(3).sum()
data['sum_5'] = data['num'].rolling(5).sum()
print(data)