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

在R中合并列字符串模式生成新列:提取SYMBOL字段

提取数据框中SYMBOL字段内容生成新列

问题场景

现有如下数据框,需要创建新列V3,提取V1、V2列中匹配模式"SYMBOL="后的字段内容。

输入数据框

V1                 V2
   -------------------------------------
   SYMBOL=GABRD       SYMBOL_SOURCE=HGNC
   FLAGS=cds_end_NF   SYMBOL=GABRD
   SYMBOL=MASP2       SYMBOL_SOURCE=HGNC
   FLAGS=cds_start_NF SYMBOL=GABRD
   SYMBOL=GABRD       SYMBOL_SOURCE=HGNC
   FLAGS=cds_start_NF SYMBOL=GABRD

期望输出

新列V3内容如下:

V3
-----
GABRD   
GABRD   
MASP2   
GABRD   
GABRD   
GABRD

解决方案

方法一:R语言实现

借助dplyr和stringr包,先合并每行的V1、V2内容,再通过正则提取目标字段:

library(dplyr)
library(stringr)

# 构造示例数据框
df <- data.frame(
  V1 = c("SYMBOL=GABRD", "FLAGS=cds_end_NF", "SYMBOL=MASP2", "FLAGS=cds_start_NF", "SYMBOL=GABRD", "FLAGS=cds_start_NF"),
  V2 = c("SYMBOL_SOURCE=HGNC", "SYMBOL=GABRD", "SYMBOL_SOURCE=HGNC", "SYMBOL=GABRD", "SYMBOL_SOURCE=HGNC", "SYMBOL=GABRD"),
  stringsAsFactors = FALSE
)

# 生成V3列
df <- df %>%
  mutate(
    combined = paste(V1, V2, sep = " "),
    V3 = str_extract(combined, "(?<=SYMBOL=)\\w+")
  ) %>%
  select(-combined)

# 查看结果
print(df$V3)

方法二:Python语言实现

用pandas结合正则表达式,对每行的V1、V2拼接后提取目标内容:

import pandas as pd
import re

# 构造示例数据框
data = {
    "V1": ["SYMBOL=GABRD", "FLAGS=cds_end_NF", "SYMBOL=MASP2", "FLAGS=cds_start_NF", "SYMBOL=GABRD", "FLAGS=cds_start_NF"],
    "V2": ["SYMBOL_SOURCE=HGNC", "SYMBOL=GABRD", "SYMBOL_SOURCE=HGNC", "SYMBOL=GABRD", "SYMBOL_SOURCE=HGNC", "SYMBOL=GABRD"]
}
df = pd.DataFrame(data)

# 定义提取函数
def extract_symbol(row):
    text = f"{row['V1']} {row['V2']}"
    match = re.search(r"SYMBOL=(\w+)", text)
    return match.group(1) if match else None

# 生成V3列
df['V3'] = df.apply(extract_symbol, axis=1)

# 查看结果
print(df['V3'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:29:50