如何提取正斜杠后末尾文本 处理df的Sample_name列获取样本ID
pandas清洗Sample_name列实现方案
以下两种方法都可以直接实现你要的提取效果,均为pandas常规处理逻辑,运行稳定效率高。
方法1:标准路径库处理(鲁棒性最强)
借助Python标准库os的路径处理方法,自动适配任意层级的文件路径,不会因为路径中存在额外斜杠、特殊字符出错:
import os # 核心处理逻辑 df["Sample_name"] = df["Sample_name"].apply( lambda x: os.path.basename(x).removesuffix(".vcf.gz") )
- 兼容提示:如果你的Python版本低于3.9,不支持
removesuffix方法,可以替换为切片写法,效果完全一致:
这里的lambda x: os.path.basename(x)[:-7]-7是因为后缀.vcf.gz固定长度为7个字符。
方法2:正则直接提取(无需导入额外模块)
直接通过pandas字符串方法的正则匹配,一步提取目标ID,代码更简洁:
df["Sample_name"] = df["Sample_name"].str.extract(r'/([^/]+)\.vcf\.gz$')
- 正则逻辑说明:匹配字符串末尾处、前接正斜杠、后接
.vcf.gz后缀的非斜杠片段,恰好对应你需要的样本ID。
两种方法运行后,得到的DataFrame都和你给出的预期结果完全一致:
| AF | GT | Sample_name |
|---|---|---|
| 0.001 | 1/1 | ID0001 |
| 0.005 | 0/1 | ID0002 |
内容的提问来源于stack exchange,提问作者Assir
相关产品推荐
相关产品推荐

