Python如何提取DataFrame中DNA序列特定模式前的字符及前缀
实现方案
需求1:提取大写字母及之前的全部内容
修改你的正则表达式,将大写字母也包含到捕获组中即可:
# 提取结果存储到新列seq_to_upper df['seq_to_upper'] = df['Sequence'].str.extract(r'^(.*?[A-Z])', expand=False)
正则说明:
^锚定匹配字符串开头,避免序列中间出现大写字母时匹配错误.*?非贪婪匹配任意字符,直到遇到第一个大写字母[A-Z]匹配第一个出现的大写字母,和前面的内容共同构成捕获组返回
需求2:提取大写字母往前数第16个字符
需求1的输出结果最后一位就是目标大写字母,直接取字符串倒数第16位即可:
df['16th_before_upper'] = df['seq_to_upper'].str[-16]
如果不需要留存需求1的结果,也可以一步完成:
df['16th_before_upper'] = df['Sequence'].str.extract(r'^(.*?[A-Z])', expand=False).str[-16]
结果验证
运行代码后输出和预期完全一致:
| gene | seq_to_upper(截取片段展示) | 16th_before_upper |
|---|---|---|
| ampC | ...tctaacgcA | c |
| yifL | ...agcaGaaagc | g |
| glyW | ...cgcGaacggc | t |
内容的提问来源于stack exchange,提问作者Melissa Arroyo-Mendoza
相关产品推荐
相关产品推荐

