python 如何处理一列数据以一定的步长滚动累加

我的数据是2021-1-1到2021-12-31 每日的订货数量,index是datetime类型的日期,我希望按照一定的步长,比如说14天,从1月1号开始 到 1月14号的数据做累加之和 放到1月1号这行,接下来1月2号到1月15号的数据做累加之和 放到1月2号这一行, 依次往下,直到12月18号到12月31号数据累加之和放到12月18号。 请问这段代码要如何实现?

img

你是想用python还是sql?
如果是sql,用开窗函数一次性就能查出来;
如果是python,初始化14行的记录,弄个循环,每次从前面减掉一行,并在后面加一行。或者直接循环取第N行到第N+13行,N=N+1递增,直到查完

import pandas as pd
import datetime

data = [[1, 236423, '2021-01-01'],
        [2, 223387, '2021-01-02'],
        [4, 397845, '2021-01-03'],
        [4, 138257, '2021-01-04'],
        [2, 834757, '2021-01-05'],
        [2, 393475, '2021-01-06'],
        [3, 393475, '2021-01-07'],
        [2, 393475, '2021-01-08'],
        [1, 393475, '2021-01-09'],]

df = pd.DataFrame(data=data, columns=['code', 'mv', 'date'])

def fun(se, x):
    date = pd.to_datetime(se['date'])
    ss = date + datetime.timedelta(days = x)
    dd = df[(pd.to_datetime(df['date'])<=ss)]['code'].sum()
    return dd

df['new'] = df.apply(fun, args = (4, ), axis = 1)
print(df)


'''--result
   code      mv        date  new
0     1  236423  2021-01-01   13
1     2  223387  2021-01-02   15
2     4  397845  2021-01-03   18
3     4  138257  2021-01-04   20
4     2  834757  2021-01-05   21
5     2  393475  2021-01-06   21
6     3  393475  2021-01-07   21
7     2  393475  2021-01-08   21
8     1  393475  2021-01-09   21
'''