在pandas数据框中删除重复项后替换特定列值

2024-09-29 19:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,我正在使用一个新的术语。在使用drop\u duplicates()之后,我在操作dataframes列时遇到问题。我想更改在删除重复项后保留的id的列'variation'中的列值,以指示此id有多个突变。在

我的代码:

df = pd.DataFrame([
('MYC', 'nonsense', 's1'),
('MYC', 'missense', 's1'),
('MYCL', 'nonsense', 's1'),
('MYCL', 'missense', 's2'),
('MYCN', 'missense', 's3'),
('MYCN', 'UTR', 's1'),
('MYCN', 'nonsense', 's1')
], columns=['id', 'mutation', 'sample'])

print(df)

结果:

^{pr2}$

我试着用我想要的东西来关闭。但是我如何将列'variation'中的值改为'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

我想要的:

     id  mutation sample
0   MYC  multi        s1
3  MYCL  nonsense     s1
4  MYCL  missense     s2
5  MYCN  missense     s3
6  MYCN  multi        s1

Tags: sampleiddfs3multidropduplicatess2
2条回答
df.loc[df.duplicated(subset=['id', 'sample'], keep='last'), 'mutation'] = 'multi'
df.drop_duplicates(subset=['id', 'sample'])

说明:首先确定哪些是重复的,并为那些改变突变列。只有在那之后,删除重复的。在

duplicated

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

groupby

^{pr2}$

相关问题 更多 >

    热门问题