我有产品的折扣数据。数据具有开始日期,结束日期和折扣值。这些日期也有重叠部分,我希望通过优先推广后续促销来进行拆分。开始日期和结束日期是日期。在示例中,我将其表示为数字。
Lambda.call
预期产量
input_df = pd.DataFrame({'item':['a']*7,
'start':[1, 5, 5, 14, 16, 21, 26],
'end':[2, 10, 13, 20, 20, 30, 35],
'discount':[0.05, 0.06, 0.07, 0.05, 0.04, 0.09, 0.10]})
| item | start_date | end_date | discount |
-------------------------------------------
| a | 1 | 2 | 0.05 |
| a | 5 | 10 | 0.06 |
| a | 5 | 13 | 0.07 |
| a | 14 | 20 | 0.05 |
| a | 16 | 20 | 0.04 |
| a | 21 | 30 | 0.09 |
| a | 26 | 35 | 0.10 |
-------------------------------------------
这是我尝试的代码
| item | start_date | end_date | discount |
-------------------------------------------
| a | 1 | 2 | 0.05 |
| a | 5 | 13 | 0.07 |<-- 5-13 promo is given preferance
| a | 14 | 15 | 0.05 |
| a | 16 | 20 | 0.04 |<-- 16-20 promo is given preferance
| a | 21 | 25 | 0.09 |
| a | 26 | 35 | 0.10 |<-- 26-35 promo is given preferance
-------------------------------------------
最终目标是获取一段时间内折扣的加权平均值。有没有更优雅的方式做到这一点。预先感谢。