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()。