Python-根据另一个变量重命名重复值

Posted

技术标签:

【中文标题】Python-根据另一个变量重命名重复值【英文标题】:Python- Renaming duplicated values based on another variable 【发布时间】:2018-11-22 13:04:34 【问题描述】:

是否可以根据另一个变量重命名这些值?在这里,我有两列,一列是 ID,另一列是水果。但是,我在想是否可以根据 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】:

设置

df = pd.DataFrame(
    'id': [1,1,1,1,2,2,2,3,3,3],
    'fruit': ['Apple', 'Banana', 'Orange', 'Banana', 'Apple', 'Orange', 'Orange', 'Apple', 'Apple', 'Orange']
)

选项 1cumcountreplace 和字符串连接(我使用正则表达式模式只匹配一个零,所以这个答案也可以支持超过 每组 9 个重复项):

df['fruit'] = df.fruit + df.groupby(
    ['id', 'fruit']).cumcount().astype(str).replace(
    r'^0$', '', regex=True
)

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

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

【讨论】:

以上是关于Python-根据另一个变量重命名重复值的主要内容,如果未能解决你的问题,请参考以下文章

XSLT 用属性值重命名元素

如何使用字典键和值重命名 pandas DataFrame 中的列?

根据向量new_varname,old_varname重命名dplyr中的变量名[重复]

使用 dplyr 重命名变量 [重复]

根据另一列中的元素重命名特定列元素

Python - 重命名其他函数返回的函数