【发布时间】:2015-10-28 11:46:39
【问题描述】:
我有一个数据框,其中包含不同产品(a、b、c)的每周销售额。如果某一周(例如第 4 周)的销售额为零,则该周没有记录:
In[1]
df = pd.DataFrame({'product': list('aaaabbbbcccc'),
'week': [1, 2, 3, 5, 1, 2, 3, 5, 1, 2, 3, 4],
'sales': np.power(2, range(12))})
Out[1]
product sales week
0 a 1 1
1 a 2 2
2 a 4 3
3 a 8 5
4 b 16 1
5 b 32 2
6 b 64 3
7 b 128 5
8 c 256 1
9 c 512 2
10 c 1024 3
11 c 2048 4
我想创建一个新列,其中包含按产品分组的前 n 周的累计销售额。例如。对于 n=2,它应该类似于 last_2_weeks:
product sales week last_2_weeks
0 a 1 1 0
1 a 2 2 1
2 a 4 3 3
3 a 8 5 4
4 b 16 1 0
5 b 32 2 16
6 b 64 3 48
7 b 128 5 64
8 c 256 1 0
9 c 512 2 256
10 c 1024 3 768
11 c 2048 4 1536
如果每周都有记录,我可以使用rolling_sum,如question 中所述。
有没有办法将“周”设置为索引并仅计算该索引的总和?或者我可以重新采样“week”并将所有缺失行的销售额设置为零吗?
【问题讨论】:
-
澄清一下,您想要滚动总和吗?例如,产品 c 在第 2 周的 last_2_weeks 销售额为 256,这只是第 1 周的值。