我有一张桌子:
id | value
-----------
1 | 1
2 | 0
3 | 0
4 | 3
假设我们在第一行。我要向前看,直到遇到非零值并将其移回。如果值为零,则next_value也将为零。
id | value | next_value
-----------------------
1 | 1 | 3
2 | 0 | 0
3 | 0 | 0
4 | 3 | Nan
我尝试在熊猫中使用移位功能,但是您只能预定义移位长度。
答案 0 :(得分:3)
为value
与0
不同的数据帧建立索引,并分配列的移位版本:
m = df.value.ne(0)
df.loc[m, 'value'] = df.loc[m, 'value'].shift(-1)
id value
0 1 3.0
1 2 0.0
2 3 0.0
3 4 NaN