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

Python如何从DataFrame的INFO列提取|HIGH|后所有基因名存入新列

解决方案

原有代码错误原因

  • 循环内错误将整个DataFrame覆盖为df['INFO']列,丢失原始数据结构,无法新增GENE列
  • 使用re.search仅能提取第一个匹配结果,无法获取同一行内的所有符合要求的基因名
  • 存在变量名拼写错误:susbtring和定义的substring不一致
  • 循环内直接对df['GENE']整列赋值,会导致所有行的结果被最后一次计算结果覆盖

正确实现代码

无需手动写for循环,用pandas向量化方法处理,效率更高,适合大规模数据集:

import pandas as pd
import re

# 匹配规则:|HIGH|之后、下一个|之前的所有字符
pattern = r"\|HIGH\|([^|]+)\|"

# 提取所有匹配结果存入新列,每行结果为列表格式
df['GENE'] = df['INFO'].str.findall(pattern)

# 若需要将同一行多个基因用逗号拼接为字符串,可追加以下代码
# df['GENE'] = df['GENE'].str.join(',')

逻辑说明

  • 正则规则用[^|]+匹配所有非|的字符,兼容含横杠、点等特殊字符的基因名,比\w+适用场景更广
  • str.findall会自动提取每行所有符合规则的匹配项,无匹配结果的行对应值为空列表
  • 向量化运算比手动遍历for循环性能高数十倍,适合处理含数千列、大量行的数据集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:06:03