Python-基于另一个变量重命名重复的值

Python-基于另一个变量重命名重复的值,python,pandas,duplicates,renaming,Python,Pandas,Duplicates,Renaming,是否有基于另一个变量重命名值的方法?在这里我有两列,一列是ID,另一列是fruits。然而,我在想,是否有可能根据ID唯一地识别它们 ID Fruits 1 Apple 1 Banana 1 Orange 1 Banana 2 Apple 2 Orange 2 Orange 3 Apple 3 Apple 3 Orange 希望能达到这样的目标 ID Fruits 1 Apple 1 Banana 1 Orange 1 Ban

是否有基于另一个变量重命名值的方法?在这里我有两列,一列是ID,另一列是fruits。然而,我在想,是否有可能根据ID唯一地识别它们

ID  Fruits
1    Apple
1   Banana
1   Orange
1   Banana
2    Apple
2   Orange
2   Orange
3    Apple
3    Apple
3   Orange
希望能达到这样的目标

ID  Fruits
1    Apple
1   Banana
1   Orange
1  Banana1
2    Apple
2   Orange
2  Orange1
3    Apple
3   Apple1
3   Orange
设置

选项1
cumcount
带有
替换
和字符串连接(我使用的正则表达式模式只匹配一个零,因此此答案还可以支持多个 每组9份):

选项2
存储groupby并使用布尔索引与
fillna
(我个人更喜欢这种方法)

两者都会导致:

   id    fruit
0   1    Apple
1   1   Banana
2   1   Orange
3   1  Banana1
4   2    Apple
5   2   Orange
6   2  Orange1
7   3    Apple
8   3   Apple1
9   3   Orange

我用图片中的数据框更新了你的问题。以后请将数据框作为文本而不是图像发布。
df['fruit'] = df.fruit + df.groupby(
    ['id', 'fruit']).cumcount().astype(str).replace(
    r'^0$', '', regex=True
)
s = df.groupby(['id', 'fruit']).cumcount()
df['fruit'] = (df.fruit + s[s>0].astype(str)).fillna(df.fruit)
   id    fruit
0   1    Apple
1   1   Banana
2   1   Orange
3   1  Banana1
4   2    Apple
5   2   Orange
6   2  Orange1
7   3    Apple
8   3   Apple1
9   3   Orange