将第一次出现的列值替换为另一个值

问题描述 投票:0回答:1

我有以下 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

如果您有任何建议,我将不胜感激:)。

pandas dataframe matrix arraylist replace
1个回答
0
投票

代码

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
© www.soinside.com 2019 - 2024. All rights reserved.