python – 从pandas数据帧中替换单元格值

这是一个示例数据.每当我在“事件”列中看到“未赢”或“未失败”时,我想将“时间”列的第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
点赞