首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Pandas Dataframe中的重复字符串

替换Pandas Dataframe中的重复字符串
EN

Stack Overflow用户
提问于 2019-04-03 20:09:15
回答 1查看 89关注 0票数 2

我有一个数据帧df

代码语言:javascript
复制
Name            Reagent
0   Experiment1 water
1   Experiment1 oil
2   Experiment1 water
3   Experiment1 milk
4   Experiment1 water
5   Experiment1 tea
6   Experiment1 water
7   Experiment1 coffee
8   Experiment2 water
9   Experiment2 coffee

我想用某种不同的方式替换相同实验中的重复名称。在这个例子中,在一个给定的实验中,只有水是重复的。

e.g

代码语言:javascript
复制
   Name         Reagent
0   Experiment1 water1
1   Experiment1 oil
2   Experiment1 water2
3   Experiment1 milk
4   Experiment1 water3
5   Experiment1 tea
6   Experiment1 water4
7   Experiment1 coffee
8   Experiment2 water
9   Experiment2 coffee

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-03 20:11:19

解决方案:使用GroupBy.cumcount作为计数器附加所有值(并将0值替换为空字符串,以忽略每个第一个副本):

代码语言:javascript
复制
df['Reagent'] += df.groupby(['Name','Reagent']).cumcount().astype(str).replace('0','')
print (df)
          Name Reagent
0  Experiment1   water
1  Experiment1     oil
2  Experiment1  water1
3  Experiment1    milk
4  Experiment1  water2
5  Experiment1     tea
6  Experiment1  water3
7  Experiment1  coffee
8  Experiment2   water
9  Experiment2  coffee

如果需要仅按两列替换所有重复项,请按两列的DataFrame.duplicated筛选行,然后添加1

代码语言:javascript
复制
mask = df.duplicated(['Name','Reagent'], keep=False)
df.loc[mask, 'Reagent'] += df[mask].groupby(['Name','Reagent']).cumcount().add(1).astype(str)
print (df)
          Name Reagent
0  Experiment1  water1
1  Experiment1     oil
2  Experiment1  water2
3  Experiment1    milk
4  Experiment1  water3
5  Experiment1     tea
6  Experiment1  water4
7  Experiment1  coffee
8  Experiment2   water
9  Experiment2  coffee
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55494824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档