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

如何从DataFrame中提取Sampleid列值末尾匹配向量元素的行

精准匹配DataFrame列末尾与向量元素的行解决方案

没问题!我来帮你搞定这个需求——正好能解决你提到的「有相似子串但只有末尾匹配才算有效样本」的场景。

先模拟一下你的数据场景,方便你对照理解:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    "Sampleid": ["632_CSF_1", "abc_632_CSF_2", "xyz_632_CSF", "def_789_Blood"],
    "Measurement": [15, 22, 30, 45]
})

# 你的目标匹配向量(这里用Python列表模拟)
targets = ["632_CSF", "789_Blood"]

核心实现:用str.endswith()精准匹配末尾

pandas的str.endswith()方法就是专门干这个的——它会严格检查字符串是否以指定内容结尾,完美避开那种「子串在中间但末尾不匹配」的无效行。

直接用一行代码就能完成筛选:

# 筛选Sampleid末尾匹配向量任意元素的行
filtered_df = df[df["Sampleid"].str.endswith(tuple(targets))]

运行后你会得到符合要求的结果:

SampleidMeasurement
xyz_632_CSF30
def_789_Blood45

像你提到的「两个包含632_CSF的样本」,比如632_CSF_1和abc_632_CSF_2,它们的末尾分别是_1和_2,不符合匹配要求,所以会被自动排除,只有真正末尾是632_CSF的xyz_632_CSF会被保留。

适配不同类型的向量

如果你的目标向量是numpy数组而不是普通列表,只需要先转成列表再用:

import numpy as np

targets_arr = np.array(["632_CSF", "789_Blood"])
filtered_df = df[df["Sampleid"].str.endswith(tuple(targets_arr.tolist()))]

这样就能轻松拿到你需要的行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:26:40