У меня есть фрейм данных, представляющий ежедневную потребность разных продуктов и разных магазинов.
SKU Store F LeadTime Date Qty Value Price Level
0 504777 1 135828 11 2018-01-22 1 3.99 3.99 45
1 504777 1 135828 11 2018-01-23 0 0.00 0.00 45
2 504777 1 135828 11 2018-01-24 3 11.97 3.99 42
3 504777 1 135828 11 2018-01-25 1 3.99 3.99 41
4 504777 1 135828 11 2018-01-26 0 0.00 0.00 41
300 704777 2 135828 11 2018-01-22 1 4.99 3.99 45
301 704777 2 135828 11 2018-01-23 0 0.00 0.00 47
302 704777 2 135828 11 2018-01-24 4 12.97 3.99 48
303 704777 2 135828 11 2018-01-25 1 3.99 3.99 49
В этом примере я пытаюсь завершить набор данных до 2018-01-31
, используя условия:
Поля: SKU, Store, F, LeadTime, Date, Level
должны быть заполнены последним значением.
Поля: Qty, Value, Price
должны быть заполнены 0.
Итак, мой ожидаемый результат должен быть таким:
SKU Store F LeadTime Date Qty Value Price Level
0 504777 1 135828 11 2018-01-22 1 3.99 3.99 45
1 504777 1 135828 11 2018-01-23 0 0.00 0.00 45
2 504777 1 135828 11 2018-01-24 3 11.97 3.99 42
3 504777 1 135828 11 2018-01-25 1 3.99 3.99 41
4 504777 1 135828 11 2018-01-26 1 3.99 3.99 41
5 504777 1 135828 11 2018-01-27 0 0.00 0.00 41
6 504777 1 135828 11 2018-01-28 0 0.00 0.00 41
7 504777 1 135828 11 2018-01-29 0 0.00 0.00 41
8 504777 1 135828 11 2018-01-30 0 0.00 0.00 41
9 504777 1 135828 11 2018-01-31 0 0.00 0.00 41
300 704777 2 135828 11 2018-01-22 1 4.99 3.99 45
301 704777 2 135828 11 2018-01-23 0 0.00 0.00 47
302 704777 2 135828 11 2018-01-24 4 12.97 3.99 48
303 704777 2 135828 11 2018-01-25 1 3.99 3.99 49
304 704777 2 135828 11 2018-01-26 0 0 0 49
305 704777 2 135828 11 2018-01-27 0 0 0 49
306 704777 2 135828 11 2018-01-28 0 0 0 49
307 704777 2 135828 11 2018-01-29 0 0 0 49
307 704777 2 135828 11 2018-01-30 0 0 0 49
307 704777 2 135828 11 2018-01-31 0 0 0 49
Я пробовал это:
df = df.set_index('Date').groupby(['SKU', 'Store']).date_range(end = '2018-01-31', freq='D').agg({
'F':'last',
'LeadTime':'last',
'Price':0,
'Value':0,
'Qty':0,
'Level':'last'}).reset_index()
Но это не правдаподход:
'DataFrameGroupBy' object has no attribute 'date_range'
PS: каждый продукт имеет различную начальную дату