gpt4 book ai didi

python - 使用字典替换pandas数据框中的字符串而不覆盖

转载 作者:行者123 更新时间:2023-12-01 09:07:39 25 4
gpt4 key购买 nike

我正在尝试使用填充有如下值的列来转换 pandas 数据框:

df['Alteration']

Q79K,E17K
Q79K,E17K
T315I

并且希望将单字母氨基酸转换为其三字母代码,使其看起来更像这样:

Gln79Lys,Glu17Lys
Gln79Lys,Glu17Lys
Thr315Ile

到目前为止,我已经尝试使用使用正则表达式作为键的字典,如下所示:

AA_code = {re.compile('[C]'): 'Cys',re.compile('[D]'): 'Asp', 
re.compile('[S]'): 'Ser',re.compile('[Q]'): 'Gln',re.compile('[K]'): 'Lys',
re.compile('[I]'): 'Ile',re.compile('[P]'): 'Pro',re.compile('[T]'): 'Thr',
re.compile('[F]'): 'Phe',re.compile('[N]'): 'Asn',re.compile('[G]'): 'Gly',
re.compile('[H]'): 'His',re.compile('[L]'): 'Leu',re.compile('[R]'): 'Arg',
re.compile('[W]'): 'Trp',re.compile('[A]'): 'Ala',re.compile('[V]'): 'Val',
re.compile('[E]'): 'Glu',re.compile('[Y]'): 'Tyr',re.compile('[M]'): 'Met'}

并根据字典替换以下代码:

df['Replacement'] = dfx2['Alteration'].replace(AA_code, regex=True)

但是,我遇到了一些奇怪的行为,其中替换函数覆盖了值,看起来更像这样:

Glyln79Leuys,Glu17Leuys
Glyln79Leuys,Glu17Leuys
Thr315Ile

据我了解, Glyln 源自首先将 Q 更改为 Gln 的代码,然后 Gln 中的 G 被 G 覆盖: Gly 键:字典中用于获取 Glyln 的值对。有什么办法可以解决这个问题吗?

谢谢!!

最佳答案

创建一个查找表,然后在Series.str.replace中的可调用中使用它,例如:

import pandas as pd

lookup = {
'Q': 'Gln',
'K': 'Lys',
'E': 'Glu',
'G': 'Gly'
# needs completing...
}

s = pd.Series(['Q79K,E17K', 'Q79K,E17K', 'T315I'])
s.str.replace('([{}])'.format(''.join(lookup)), lambda m: lookup[m.group(1)])

给你:

0    Gln79Lys,Glu17Lys
1 Gln79Lys,Glu17Lys
2 T315I

关于python - 使用字典替换pandas数据框中的字符串而不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917483/

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