Skip to main content
 首页 » 编程设计

python之根据其他列条件更新列

2025年05月04日10sxdcgaq8080

我需要更新 vid 或者根据 change 列创建一个新列

df = [{'vid': 14, 'change': 0}, {'vid': 15, 'change': 1}, {'vid': 16, 'change': 0} , {'vid': 16, 'change': 0}, {'vid': 17, 'change': 0}, {'vid': 17, 'change': 1}, {'vid': 18, '变化': 0}, {'vid': 18, '变化': 0}]

    vid  change 
0    14       0 
1    15       1 
2    16       0 
3    16       0 
4    17       0 
5    17       1 
6    18       0 
7    18       0 

如果 change == 1 则下一组视频应更改为当前视频,如果 change == 0 则下一组视频应保持不变。

从我上面的例子中,vid 16 需要更改为 15,因为 15 有 change = 1 但是 17 保持不变,因为 16 没有 change = 1

Change = 1 只会在 vid 将要在下一行发生变化时发生

预期输出

    vid  change 
0    14       0 
1    15       1 
2    15       0 
3    15       0 
4    17       0 
5    17       1 
6    17       0 
7    17       0 
 

请您参考如下方法:

假设数据框构造得像我们可以做的示例 shift ,然后创建 map dict 并 replace

s=df.groupby('vid').change.max().eq(1) 
df.vid=df.vid.replace(dict(zip(s[s.shift().fillna(False)].index,s.index[s]))) 
df 
Out[65]:  
   vid  change 
0   14       0 
1   15       1 
2   15       0 
3   15       0 
4   17       0 
5   17       1 
6   17       0 
7   17       0