Я использую Pandas в Python 3.7 для обработки моих данных.
У меня есть два кадра данных, df_orders и df_sales, которые выглядят следующим образом:
df_orders:
StoreID ProductID OrderDate Cover_Days
1234 0009998 20190510 2
1234 0009998 20190512 2
4321 0009998 20190510 2
4321 0087664 20190510 10
df_sales:
StoreID ProductID Date TotalSales
1234 0009998 20190510 10
1234 0009998 20190511 10
4321 0009998 20190511 15
4321 0087664 20190511 50
4321 0087664 20190519 50
Я хочу присоединить df_sales к df_orders для StoreID, ProductID и суммы TotalSales в диапазоне от OrderDate до OrderDate + Cover_Days, чтобы получить результат:
df_result:
StoreID ProductID OrderDate Cover_Days Sum_TotalSales
1234 0009998 20190510 2 20
1234 0009998 20190512 2 0
4321 0009998 20190510 2 15
4321 0087664 20190510 10 100
Фрейм данных df_sales имеет около 5 миллионов строк в день продаж, поэтому эффективный ответ, очевидно, предпочтительнее!
Мысли
Edit:
Под "суммой TotalSales в диапазоне от OrderDate до OrderDate + Cover_Days" я подразумеваю, что я хочу суммировать все продажи, соответствующие трем условиям:
- df_sales.ProductID = df_orders.ProductID и
- df_sales.StoreID = df_orders.StoreID и
- , где df_sales.Date попадает в диапазон дат между df_orders.OrderDate (например, 20190510) и df_orders ['OrderDate' + 'Cover_Days'] (например, 20190510 + 2 = 20190512).
Причина в том, что данные заказа содержат несколько записей для каждой уникальной комбинации StoreID + ProductID, каждая с разными (не перекрывающимися) датами.