首页 > 解决方案 > Pandas 数据框中的新列与给定列中的重复项有关

问题描述

嗨,我有一个带有“id”列的数据框,如下所示

   
id    
abc
def
ghi
abc
abc
xyz
def

我需要一个带有数字 1 的新列“id1”,并且每个重复项都应该增加数字。输出应该如下所示。


id    id1
abc   abc1
def   def1
ghi   ghi1
abc   abc2
abc   abc3
xyz   xyz1
def   def2

谁能建议我解决这个问题?

标签: python-3.xpandasdataframe

解决方案


用于groupby.cumcountcount ids,添加1并转换为strings:

df['id1'] = df['id'] + df.groupby('id').cumcount().add(1).astype(str)
print (df)
    id   id1
0  abc  abc1
1  def  def1
2  ghi  ghi1
3  abc  abc2
4  abc  abc3
5  xyz  xyz1
6  def  def2

详情

print (df.groupby('id').cumcount())
0    0
1    0
2    0
3    1
4    2
5    0
6    1
dtype: int64

推荐阅读