我有一个类似这样的数据框:
| DATETIME | PRODUCT | AMOUNT |
我需要生成最后一列,显示过去5分钟内每个产品(我有不止两个产品)的累计销售量。以下是示例:
| DATETIME | PRODUCT | AMOUNT | CUM SUM |
| 2020-01-01 17:10:00 | A | 20 | 20 -> 20 |
| 2020-01-01 17:12:00 | B | 30 | 30 -> 30 |
| 2020-01-01 17:13:00 | A | 10 | 20+10 -> 30 |
| 2020-01-01 17:13:00 | A | 15 | 20+10+15 -> 45 |
| 2020-01-01 17:16:00 | B | 10 | 30+10 -> 40 |
| 2020-01-01 17:17:00 | A | 15 | 10+15+15 -> 40 |
| 2020-01-01 17:20:00 | B | 20 | 10+20 -> 30 |
| 2020-01-01 17:20:00 | B | 10 | 10+20+10 -> 40 |
| 2020-01-01 17:25:00 | A | 10 | 10 -> 10 |
请注意,(datetime, product) 一对可能不唯一,但是我仍然必须根据数据框索引保持顺序。
我尝试过:
1. 滚动函数:但不幸的是,我没有固定的窗口大小,并且我没有独特的一对(datetime, product),因此我不能使用datetime作为索引,然后使用 .rolling('5 minutes')。
2. Groupby(product).cumsum():但我无法将总和限制在最近的几分钟内。
可能需要某些平滑而性能不太差的方法,适用于相当大的df。
你有什么提示吗?
谢谢您的帮助。
resample
(5分钟),然后再进行滚动操作? - undefined