Я хотел бы создать еще один столбец на основе продаж за предыдущую неделю. Вот пример ввода:
df = pd.DataFrame({'Week':[1,1,2,2,3,3,4,4,5,5,1,1,2,2,3,3,4,4,5,5],
'Category':['Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White'],
'id':[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2],
'Sales':[100,200,300,400,100,200,300,400,100,200,100,200,300,400,100,200,300,400,100,200],
'Sales_others':[10,20,30,40,10,20,30,40,10,20,10,20,30,40,10,20,30,40,10,20]})
print(df)
Исходя из этого, я хотел бы создать еще один столбец, который представляет собой не что иное, как продажи за предыдущую неделю. Вот пример желаемого результата:
df_output = pd.DataFrame({'Week':[1,1,2,2,3,3,4,4,5,5,1,1,2,2,3,3,4,4,5,5],
'Category':['Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White'],
'id':[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2],
'Sales':[100,200,300,400,100,200,300,400,100,200,100,200,300,400,100,200,300,400,100,200],
'Sales_others':[10,20,30,40,10,20,30,40,10,20,10,20,30,40,10,20,30,40,10,20],
'Sales_previous_week':[0,0,100,200,300,400,100,200,300,400,0,0,100,200,300,400,100,200,300,400]})
print(df_output)
Мне трудно создать то, что было бы самообъединением. Предыдущая неделя должна зависеть только от файла продаж, и я должен иметь возможность сохранить столбец «sales_others»
- Изменить Добавление исходного кода
CR_UK_NL_Weeklevel['PREVIOUS_WEEK'] = CR_UK_NL_Weeklevel.groupby(['RETAIL_SITE_ID','CATEGORY_NAME'])['CURRENT_WEEK'].shift(fill_value=0)
print(CR_UK_NL_Weeklevel)
Переименование столбцов
CR_UK_NL_Weeklevel.columns.values[4] = 'CURRENT_WEEK'
CR_UK_NL_Weeklevel.columns.values[3] = 'LAST_YEAR_WEEK'
CR_UK_NL_Weeklevel.columns.values
Попытка реализовать решение:
CR_UK_NL_Weeklevel['PREVIOUS_WEEK'] = CR_UK_NL_Weeklevel.groupby(['RETAIL_SITE_ID','CATEGORY_NAME'])['CURRENT_WEEK'].shift(fill_value=0)
print(CR_UK_NL_Weeklevel)
[78]:
CR_UK_NL_Weeklevel['PREVIOUS_WEEK'] = CR_UK_NL_Weeklevel.groupby(['RETAIL_SITE_ID','CATEGORY_NAME'])['CURRENT_WEEK'].shift(fill_value=0)
print(CR_UK_NL_Weeklevel)
- Ошибка
------- -------------------------------------------------- ------------------ KeyError Traceback (последний вызов был последним) в ----> 1 CR_UK_NL_Weeklevel ['PREVIOUS_WEEK'] = CR_UK_NL_Weeklevel.groupby (['RETAIL_SITE_ID', ' CATEGORY_NAME ']) [' CURRENT_WEEK ']. Shift (fill_value = 0) 2 печати (CR_UK_NL_Weeklevel) ~ \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ pandas \ core \ base.py в getitem (self, key) 273 else: 274, если ключ отсутствует в self.obj: -> 275 повысить KeyError («Столбец не найден: {key}». Format (key = key)) 276 вернуть self._gotitem (key , ndim = 1) 277 KeyError: 'Столбец не найден: CURRENT_WEEK'