#python #pandas
#python #pandas
Вопрос:
Давайте предположим, что у меня есть следующий набор данных:
Stock_id Week Stock_value
1 1 2
1 2 4
1 4 7
1 5 1
2 3 8
2 4 6
2 5 5
2 6 3
Я хочу сдвинуть значения Stock_value
столбца, но только на последовательные недели.
Это должно привести к следующему результату:
Stock_id Week Stock_value
1 1 NA
1 2 2
1 4 NA
1 5 7
2 3 NA
2 4 8
2 5 6
2 6 5
Так, например, в хранилище 1 значение Stock_value недели 2 не должно быть перенесено на неделю 4 (поскольку сейчас я хочу сдвиг на одну неделю).
Как я могу это легко сделать?
Ответ №1:
IIUC, используя week
с его diff
помощью, создает другой групповой ключ
df.groupby([df.Stock_id,df.Week.diff().ne(1).cumsum()]).Stock_value.shift()
Out[157]:
0 NaN
1 2.0
2 NaN
3 7.0
4 NaN
5 8.0
6 6.0
7 5.0
Name: Stock_value, dtype: float64
#df['Stock_value2']= df.groupby([df.Stock_id,df.Week.diff().ne(1).cumsum()]).Stock_value.shift()
Комментарии:
1. Спасибо за ответ (голосуем за). Я думаю, это должно сработать. Я хотел бы немного понять, зачем использовать .cumsum() .