gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:06:02 25 4
gpt4 key购买 nike

我是 pandas 的初学者(如果我使用了错误的术语,我很抱歉),我目前正在从事基因组学项目。使用 drop_duplicates() 后,我在操作数据帧列时遇到问题。我想更改删除重复项后保留的 id 的“突变”列中的列值,以指示该 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)

结果:

     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

我尝试使用 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

我想要什么:

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

最佳答案

重复

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

关于python - 删除 pandas 数据框中的重复项后替换特定列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52838753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com