我有以下 2D DataFrame,我想将每列中第一次出现的值 2 替换为值 4。注意,只有列中第一次出现的值,该列中其余的 2 可以保留。
col1 col2 col3 col4
0 5 7 12 2
1 0 2 9 1
2 2 9 1 1
3 2 5 2 2
4 2 3 2 7
我尝试过使用 argmax() 和 idxmax(),但由于某种原因,2 的所有值都被替换了。我只想替换第一个出现的地方——以便输出如下所示:
col1 col2 col3 col4
0 5 7 8 4
1 0 4 9 1
2 4 9 1 1
3 2 5 4 2
4 2 3 2 7
如果您有任何建议,我将不胜感激:)。
代码
cond = df.eq(2) & df.eq(2).cumsum().eq(1)
out = df.mask(cond, 4)
输出:
col1 col2 col3 col4
0 5 7 12 4
1 0 4 9 1
2 4 9 1 1
3 2 5 4 2
4 2 3 2 7