假设我具有以下数据集:
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中,不应将第2周的Stock_value转移到第4周(因为我现在要转移1周)。
我如何轻松地做到这一点?
答案 0 :(得分:2)
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()