Python 将列值中的重复项替换为列值加上递增的数字。使用熊猫

Python 将列值中的重复项替换为列值加上递增的数字。使用熊猫,python,pandas,dataframe,Python,Pandas,Dataframe,我的数据框看起来像这样。当特定“id”上的列中存在任何重复值时,这些列值将通过如下方式增加数值进行追加。A、 A_1、A_2等等 df = pd.DataFrame({'id':[1,1,1,2,2,2,2,2],'Col':['A','B','A','A','D','A','A','A']}) 输出如下所示: 用于计数器,从右侧的旁边添加\u,删除第一个值并添加到列中: df['Col'] += df.groupby(['id','Col']).cumcount().astype(str)

我的数据框看起来像这样。当特定“id”上的列中存在任何重复值时,这些列值将通过如下方式增加数值进行追加。A、 A_1、A_2等等

df = pd.DataFrame({'id':[1,1,1,2,2,2,2,2],'Col':['A','B','A','A','D','A','A','A']})

输出如下所示:

用于计数器,从右侧的旁边添加
\u
,删除第一个值并添加到
列中:

df['Col'] += df.groupby(['id','Col']).cumcount().astype(str).radd('_').replace('_0','')
print (df)
   id  Col
0   1    A
1   1    B
2   1  A_1
3   2    A
4   2    D
5   2  A_1
6   2  A_2
7   2  A_3
用于计数器,从右侧按添加
,删除第一个值并添加到
列中:

df['Col'] += df.groupby(['id','Col']).cumcount().astype(str).radd('_').replace('_0','')
print (df)
   id  Col
0   1    A
1   1    B
2   1  A_1
3   2    A
4   2    D
5   2  A_1
6   2  A_2
7   2  A_3

有了你们展示的样品,你们能试一下下面的吗。在这里使用
np.where
概念

s = df.groupby(['id','Col']).cumcount()
df['Col'] = np.where(s!=0, df['Col'] + '_' + s.astype(str), df['Col'])

有了你们展示的样品,你们能试一下下面的吗。在这里使用
np.where
概念

s = df.groupby(['id','Col']).cumcount()
df['Col'] = np.where(s!=0, df['Col'] + '_' + s.astype(str), df['Col'])