如何在给定三个不同的唯一列的唯一行末尾添加计数器

2024-09-30 05:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将计数器添加到唯一行的末尾,但无法这样做。我有4列,即“ID”、“Name”、“Amount”。我面临的问题是,我想在唯一行“ID”列的末尾添加计数器,但请确保我也在考虑其他唯一行

这是我正在使用的数据帧

   Amount    ID Name
0     110  c121  abc
1     120  c121  abc
2     120  c123  sdd
3     140  c124  eet

df = {'ID':['c121', 'c121', 'c123', 'c124'], 'Name':['abc', 'abc','sdd','eet'],'Amount':[110,120,120,140]} 
df = pd.DataFrame(df)

电流测向

 Amount    ID Name
0     110  c121  abc
1     120  c121  abc
2     120  c123  sdd
3     140  c124  eet

预期结果:

 Amount    ID    Name
0     110  c121_1  abc
1     120  c121_2  abc
2     120  c123    sdd
3     140  c124    eet

Tags: 数据nameiddataframedf计数器amountpd
1条回答
网友
1楼 · 发布于 2024-09-30 05:28:08

首先按^{}只过滤重复的值,用^{}过滤它们,按^{}添加计数器,用^{}1开始,把值转换成字符串,用^{}添加_右边。然后用+=分配给筛选的ID列:

#for test duplicates in ID column
m = df['ID'].duplicated(keep=False)
#for test duplicates in Name and ID columns
#m = df.duplicated(['Name', 'ID'], keep=False)
df.loc[m, 'ID'] += df[m].groupby('ID').cumcount().add(1).astype(str).radd('_')

备选方案:

df.loc[m, 'ID'] = df.loc[m, 'ID'] + '_' + df[m].groupby('ID').cumcount().add(1).astype(str)

print (df)
       ID Name  Amount
0  c121_1  abc     110
1  c121_2  abc     120
2    c123  sdd     120
3    c124  eet     140

相关问题 更多 >

    热门问题