这是一个示例数据。每当我在 Not win 列中看到 Not failEvent 时,我想将 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/

10-12 18:03