这是一个示例数据。每当我在 Not win
列中看到 Not fail
或 Event
时,我想将 Time
列的第 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
的 bool 掩码,然后是 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
关于python - 替换 Pandas 数据框中的单元格值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50945403/