gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:16:39 25 4
gpt4 key购买 nike

我正在将计数器添加到唯一行的末尾,但无法执行此操作。我有 4 列,即“ID”、“名称”、“金额”。我面临的问题是我想添加计数器位于唯一行“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)

当前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

最佳答案

首先按Series.duplicated仅过滤重复值,用 boolean indexing 过滤它们并通过 GroupBy.cumcount 添加计数器,使用Series.add对于从 1 开始的情况,请将值转换为字符串并使用 Series.radd在右侧添加 _ 。然后使用 += 分配给过滤后的 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

关于python - 如何在给定三个不同的唯一列的唯一行末尾添加计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57917971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com