You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas实现序列指定位置字符的识别与替换

基于Pandas的特定位置字符替换实现方案

实现逻辑说明

  • 先解析变异标识列(第二列)的格式:如R11W可拆解为原字符R、1-based位置11、目标替换字符W
  • 序列字符串在Python中为0-based索引,因此需要将解析出的位置减1后再做匹配
  • 匹配规则:序列对应位置字符与拆解出的原字符一致时执行替换,否则返回NaN

完整实现代码

import pandas as pd
import re

# 1. 读取输入数据,分隔符设为任意空白字符适配你的输入格式
df = pd.read_csv('input.txt', sep='\s+', names=['gene', 'mut_tag', 'sequence'], header=0)

def replace_sequence(row):
    # 正则拆解变异标识的三个部分
    match_res = re.match(r'([A-Z])(\d+)([A-Z])', row['mut_tag'])
    if not match_res:
        return pd.NA
    orig_char, pos_str, target_char = match_res.groups()
    pos = int(pos_str) - 1  # 转为0-based索引
    # 校验位置合法性 + 字符匹配
    if pos >= len(row['sequence']) or row['sequence'][pos] != orig_char:
        return pd.NA
    # 执行指定位置字符替换
    return row['sequence'][:pos] + target_char + row['sequence'][pos+1:]

# 2. 逐行处理生成新的序列列
df['sequence'] = df.apply(replace_sequence, axis=1)

# 可选:将pd.NA转为你需要的NaN字符串显示
df = df.fillna('NaN')

# 3. 输出结果,也可调用df.to_csv()保存为文件
print(df.to_string(index=False))

输出验证

运行上述代码后输出结果与你给出的预期输出完全一致:

gene mut_tag                                           sequence
   TNN    R11W                  MSLQEMFRFPWGLLLGSVLLVASAPATL
 ASTN1     E5V                                                 NaN
 HSPB7    H19P  MSHRTSSTFRAERSFHSSPSSSSSSTSSSASRALPAQDPPMEK
CLCNKB     C3Y               MEYFVGLREGSSGNPVTLQELWGPCPRIRRGIRG
 SZRD1    P10L                                                 NaN

内容的提问来源于stack exchange,提问作者LoganLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:06:08