首页 > 解决方案 > 使用重复值来增加列

问题描述

我有一个 Pandas 数据框,我想根据重复值的数量增加一列。因此,当找到重复项时,所有其他出现的次数都会增加。所以给定这个输入数据框

    SM
 0  AB
 1  AC
 2  AD
 3  AB
 4  AB
 5  AC
 6  AE
 7  AD

返回

     SM DM
  0  AB AB
  1  AC AC
  2  AD AD
  3  AB AB_1
  4  AB AB_2
  5  AC AC_1
  6  AE AE
  7  AD AD_1

我尝试了这行代码,但我不知道如何递增

 np.where(a.SM.duplicated(keep='first'), a.SM+'_1', a.SM)

标签: pythonpandasnumpydataframe

解决方案


使用groupby.cumcountSeries.where

s = df.groupby('SM').cumcount()

df['DM'] = df['SM'].where(s.eq(0), df['SM'] + '_' + s.astype(str))

[出去]

   SM    DM
0  AB    AB
1  AC    AC
2  AD    AD
3  AB  AB_1
4  AB  AB_2
5  AC  AC_1
6  AE    AE
7  AD  AD_1

推荐阅读