![](/img/trans.png)
[英]Replacing dataframe values after removing/replacing character in rows using Pandas
[英]Replacing specific column values after removing duplicates in a pandas dataframe
我是熊貓的初學者(如果我使用錯誤的術語,我道歉),我目前正致力於基因組學項目。 使用drop_duplicates()后,我無法操作dataframes列。 我想更改刪除重復項后保留的id的列'mutation'中的列值,以指示此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(),我正在接近我想要的。 但是,如何將“變異”列中的值更改為“多個”?
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
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
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
df.loc[df.duplicated(subset=['id', 'sample'], keep='last'), 'mutation'] = 'multi'
df.drop_duplicates(subset=['id', 'sample'])
說明:首先確定哪些是重復項並更改那些重復項的變異列。 之后,刪除重復項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.