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

如何从多列DataFrame提取以GG开头的值并生成新DataFrame?

R 解决方案

可以借助dplyr和stringr包快速实现需求,步骤如下:

library(dplyr)
library(stringr)

# 构造示例数据(和你提供的结构一致)
df <- tibble(
  Symbol = c("LOC6540581", "LOC6541346", "LOC6548272"),
  X = c("Adh", "eve", "amy"),
  X.1 = c("Adh-PA", "CG2328", "Amy-p"),
  X.2 = c("GG25120", "eve-PA", "GG22216"),
  X.3 = c("Dere\\Adh", "GG24126", "Amy-p-PA"),
  X.4 = c("GG25120-PA", "Dere\\eve", "Dere\\Amy-p"),
  X.5 = c(NA, "CG2328-PA", "GG22216-PA"),
  X.6 = c(NA, "GG24126-PA", NA),
  X.7 = rep(NA, 3), X.8 = rep(NA, 3), X.9 = rep(NA, 3),
  X.10 = rep(NA, 3), X.11 = rep(NA, 3), X.12 = rep(NA, 3),
  X.13 = rep(NA, 3), X.14 = rep(NA, 3), X.15 = rep(NA, 3), X.16 = rep(NA, 3)
)

# 提取目标数据
result <- df %>%
  rowwise() %>%
  # 筛选当前行中以GG开头的字符串,取第一个匹配值
  mutate(X = str_subset(c_across(X:X.16), "^GG")[[1]]) %>%
  ungroup() %>%
  select(Symbol, X)

print(result)

输出结果:

# A tibble: 3 × 2
  Symbol     X      
  <chr>      <chr>  
1 LOC6540581 GG25120
2 LOC6541346 GG24126
3 LOC6548272 GG22216

Python 解决方案

用Pandas的行遍历和字符串匹配功能实现:

import pandas as pd
import numpy as np

# 构造示例数据
data = {
    "Symbol": ["LOC6540581", "LOC6541346", "LOC6548272"],
    "X": ["Adh", "eve", "amy"],
    "X.1": ["Adh-PA", "CG2328", "Amy-p"],
    "X.2": ["GG25120", "eve-PA", "GG22216"],
    "X.3": ["Dere\\Adh", "GG24126", "Amy-p-PA"],
    "X.4": ["GG25120-PA", "Dere\\eve", "Dere\\Amy-p"],
    "X.5": [np.nan, "CG2328-PA", "GG22216-PA"],
    "X.6": [np.nan, "GG24126-PA", np.nan],
    "X.7": [np.nan]*3, "X.8": [np.nan]*3, "X.9": [np.nan]*3,
    "X.10": [np.nan]*3, "X.11": [np.nan]*3, "X.12": [np.nan]*3,
    "X.13": [np.nan]*3, "X.14": [np.nan]*3, "X.15": [np.nan]*3, "X.16": [np.nan]*3
}
df = pd.DataFrame(data)

# 定义函数:提取每行中以GG开头的第一个值
def get_gg_value(row):
    gg_items = [val for val in row if isinstance(val, str) and val.startswith("GG")]
    return gg_items[0] if gg_items else np.nan

# 应用函数并生成结果
df["X"] = df.drop("Symbol", axis=1).apply(get_gg_value, axis=1)
result = df[["Symbol", "X"]]

print(result)

输出结果:

Symbol        X
0  LOC6540581  GG25120
1  LOC6541346  GG24126
2  LOC6548272  GG22216

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:43