【发布时间】:2020-11-19 16:29:46
【问题描述】:
我有 2 个数据框:
带有销售数据的df1:
key | date | sales
1 | 2020-10-16 | 100
1 | 2020-10-17 | 150
1 | 2020-10-19 | 180
2 | 2019-11-01 | 26
2 | 2019-11-02 | 27
2 | 2019-11-05 | 28
带有广告活动数据的df2:
key | sale_start | sale_end | stock
1 | 2020-10-16 | 2020-10-18 | 1000
1 | 2020-10-17 | 2020-10-20 | 1500
1 | 2020-10-20 | 2020-10-31 | 1800
2 | 2019-11-01 | 2019-11-03 | 260
2 | 2019-11-03 | 2019-11-05 | 270
2 | 2019-11-05 | 2019-11-15 | 280
- 我需要将“df2”的“库存”编号转换为“df1”,以便“df1”的每个销售日都有库存编号作为列。
- 那么我需要当天的已售产品库存百分比。
有一些重叠的广告系列,因此需要将这些重叠天的“库存”相加。
最终结果应该是:
key | date | sales | stock | sales_stock_%
1 | 2020-10-16 | 100 | 1000 | 10
1 | 2020-10-17 | 150 | 2500 (1000 + 1500) | 6
1 | 2020-10-19 | 180 | 1500 | 12
2 | 2019-11-01 | 26 | 260 | 10
2 | 2019-11-02 | 27 | 260 | 10.38461538461538
2 | 2019-11-05 | 28 | 550 (270 + 280) | 5.090909090909091
最后一栏很简单,但如何将库存添加到 df1?
【问题讨论】:
-
是 sale_start 和 sale_end 日期时间吗?日期也包括在内,那么 df1 的第一行是否涵盖所有三天?日期如何重叠?
-
sale_start 和 sale_end 都是 dtype: datetime64[ns]。 df1 的第一行仅涵盖“日期”列(此处为“2020-10-16”)中的一天,与 df1 中的所有其他行相同。重叠发生在 df2 中,例如第 1 行表示此活动的活动日期为“2020-10-16”、“2020-10-17”、“2020-10-18”,但第 2 行表示此活动从“2020-10-17”、“2020”开始-10-18”、“2020-10-19”、“2020-10-20”。因此,两个广告系列在“2020-10-17”+“2020-10-18”天重叠。