Python 删除数据帧中的重复项后替换特定列值

Python 删除数据帧中的重复项后替换特定列值,python,pandas,Python,Pandas,我是熊猫的初学者(如果我使用了错误的术语,我很抱歉),我目前正在从事一个基因组学项目。在使用drop_duplicates()后,我在操作数据帧列时遇到问题。我想更改删除重复项后保留的id的“突变”列中的列值,以指示此id有多个突变 我的代码: 结果: 我试着使用drop_duplicates(),我已经接近我想要的了。但是如何将“mutation”列中的值更改为“multi” print(df.drop_duplicates(subset=('sample','id'))) id

我是熊猫的初学者(如果我使用了错误的术语,我很抱歉),我目前正在从事一个基因组学项目。在使用drop_duplicates()后,我在操作数据帧列时遇到问题。我想更改删除重复项后保留的id的“突变”列中的列值,以指示此id有多个突变

我的代码: 结果: 我试着使用drop_duplicates(),我已经接近我想要的了。但是如何将“mutation”列中的值更改为“multi”

 print(df.drop_duplicates(subset=('sample','id')))
     id  mutation sample
0   MYC  nonsense     s1
3  MYCL  nonsense     s1
4  MYCL  missense     s2
5  MYCN  missense     s3
6  MYCN       UTR     s1
我想要的是: 说明:首先确定哪些是重复的,并更改这些重复的突变列。只有在之后,才能删除副本。

duplicated

groupby

这太棒了!感谢您提供不同的解决问题的方法:)
     id  mutation sample
0   MYC  nonsense     s1
1   MYC  nonsense     s1
2   MYC  missense     s1
3  MYCL  nonsense     s1
4  MYCL  missense     s2
5  MYCN  missense     s3
6  MYCN       UTR     s1
7  MYCN  nonsense     s1
 print(df.drop_duplicates(subset=('sample','id')))
     id  mutation sample
0   MYC  nonsense     s1
3  MYCL  nonsense     s1
4  MYCL  missense     s2
5  MYCN  missense     s3
6  MYCN       UTR     s1
     id  mutation sample
0   MYC  multi        s1
3  MYCL  nonsense     s1
4  MYCL  missense     s2
5  MYCN  missense     s3
6  MYCN  multi        s1
df.loc[df.duplicated(subset=['id', 'sample'], keep='last'), 'mutation'] = 'multi'
df.drop_duplicates(subset=['id', 'sample'])
mask = df.duplicated(['id', 'sample'], keep=False)
df.assign(mutation=df.mutation.mask(mask, 'multi')).drop_duplicates()

     id  mutation sample
0   MYC     multi     s1
2  MYCL   nonsens     s1
3  MYCL  missense     s2
4  MYCN  missense     s3
5  MYCN     multi     s1
df.groupby(['id', 'sample'], sort=False).mutation.pipe(
    lambda g: g.first().mask(g.size() > 1, 'multi')
).reset_index().reindex(df.columns, axis=1)

     id  mutation sample
0   MYC     multi     s1
1  MYCL   nonsens     s1
2  MYCL  missense     s2
3  MYCN  missense     s3
4  MYCN     multi     s1