这是一个示例数据.每当我在“事件”列中看到“未赢”或“未失败”时,我想将“时间”列的第1行中的值更改为0.
x = pd.DataFrame({'Id': [102,303,944, 111, 675, 236], 'Event':['win', 'fail','Not fail','win','win','Not win'],
'Time':[10,22,0, 23, 45, 0]})
这就是结果的样子.
Event Id Time
0 win 102 10
1 fail 303 0
2 Not fail 944 0
3 win 111 23
4 win 675 0
5 Not win 236 0
最佳答案 使用带有
pd.Series.shift
的布尔掩码,然后是
pd.DataFrame.loc
:
mask = x['Event'].isin(['Not fail', 'Not win']).shift(-1).fillna(False)
x.loc[mask, 'Time'] = 0
print(x)
Event Id Time
0 win 102 10
1 fail 303 0
2 Not fail 944 0
3 win 111 23
4 win 675 0
5 Not win 236 0