Python 基于列的值的GroupBy和Shift

Python 基于列的值的GroupBy和Shift,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\u value列的值,但仅在连续几周内移动 这将产生以下输出: Stock_id Week Stock_value 1 1 NA 1 2 2 1 4 NA 1 5 7 2 3 NA

假设我有以下数据集:

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\u 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周的库存值不应该转移到第4周(因为我现在想要一周的转移)


我怎样才能轻松做到这一点?

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()
谢谢你的回答(向上投票)。我想这应该行得通。我想了解一下为什么要使用.cumsum()。