>我有一个数据帧
COL1 COL2 COL3
Red Blue Green
Red Yellow Blue
Blue Red Blue
我想重命名数据框中的值,如果它们在一行中出现 2x(或更多(
所以预期的输出是
COL1 COL2 COL3
Red Blue Green
Red Yellow Blue
Blue Red 2Blue
我们可以在这里使用一个自定义函数,它将检查值是否在一行中duplicated
,并在使用series.mask
后为每个值添加一个incremental counter
:
def myf(x):
counter = x.groupby(x).cumcount().add(1).astype(str)
return x.mask(x.duplicated(),x.radd(counter))
print(df.apply(myf,axis=1))
#or df.T.apply(myf).T
COL1 COL2 COL3
0 Red Blue Green
1 Red Yellow Blue
2 Blue Red 2Blue