0

我想在 Python 中找到前四个星期的销售额。比如说

ID  Category    Date    Sales
1   AA  7/02/2022   1
1   AA  31/01/2022  3
1   AA  24/01/2022  5
1   AA  10/01/2022  7
1   AA  03/01/2022  9
2   BB  7/02/2022   2
2   BB  31/01/2022  4
2   BB  24/01/2022  6
2   BB  17/01/2022  8
2   BB  10/01/2022  10

对于 1 AA 2022 年 7 月 2 日,过去 4 周的总和为 9(因为 2022 年 1 月 17 日不存在,必须包括当前行日期)

4

1 回答 1

3

您可以将日期设置为 index、groupby Category 并获取 28 天滚动窗口的总和:

import pandas as pd
import io

data = '''ID  Category    Date    Sales
1   AA  7/02/2022   1
1   AA  31/01/2022  3
1   AA  24/01/2022  5
1   AA  10/01/2022  7
1   AA  03/01/2022  9
2   BB  7/02/2022   2
2   BB  31/01/2022  4
2   BB  24/01/2022  6
2   BB  17/01/2022  8
2   BB  10/01/2022  10'''

df = pd.read_csv(io.StringIO(data), sep='\s+')
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')

result_df = df.set_index('Date').sort_index().groupby('Category')['Sales'].rolling("28D").sum().reset_index()

输出:

类别 日期 销售量
0 AA 2022-01-03 00:00:00 9
1 AA 2022-01-10 00:00:00 16
2 AA 2022-01-24 00:00:00 21
3 AA 2022-01-31 00:00:00 15
4 AA 2022-02-07 00:00:00 9
5 BB 2022-01-10 00:00:00 10
6 BB 2022-01-17 00:00:00 18
7 BB 2022-01-24 00:00:00 24
8 BB 2022-01-31 00:00:00 28
9 BB 2022-02-07 00:00:00 20
于 2022-02-06T20:04:13.740 回答