python - 熊猫在子字符串中找到完美匹配
问题描述
我有一个熊猫df:
0 1 2 3
0 chr1 69090 70008 OR4F5|CDS3
1 chr1 450739 451678 OR4F29|CDS1
2 chr1 925917 926037 SAMD11|CDS2
3 chr1 930154 930336 SAM|CDS2
4 chr1 940555 947899 ERSAM|CDS1
5 chr1 944686 944806 NOC2L|CDS3
6 chr1 945041 945161 NOC2L|CDS3
和一个清单:
genes = ["OR4F5", "SAM"]
如何提取列表中完全匹配的行?
out = pd.DataFrame()
for gene in genes:
out = pd.concat([out, df[df[3].str.match(gene)]])
产量:
0 1 2 3
0 chr1 69090 70008 OR4F5|CDS3
2 chr1 925917 926037 SAMD11|CDS2
3 chr1 930154 930336 SAM|CDS2
所需的输出是:
0 1 2 3
0 chr1 69090 70008 OR4F5|CDS3
3 chr1 930154 930336 SAM|CDS2
很想看到正则表达式的解决方案,因为我一直在努力解决这个问题,但无法让它发挥作用。
解决方案
IIUC str.split
+isin
df[df['3'].str.split('|',expand=True).isin(genes).any(1)]
Out[252]:
0 1 2 3
0 chr1 69090 70008 OR4F5|CDS3
3 chr1 930154 930336 SAM|CDS2
推荐阅读
- java - C++ 与 Java 的输出差异
- php - PHP,使用包含下划线的变量名创建一个 mySQL 表
- apache - 如何在 Nuxt 路由器中手动生成带有 .htaccess 的 404 页面回退的页面
- c++ - wxWidgets wxThreadHelper 示例问题
- python - 无法进入 tkinter,python
- json - 从包含多个 json 数据的文件中提取单个 json 数据并使其紧凑
- flutter - 如何使聊天气泡形状使用路径?
- linux - libusb bulk 的最大传输大小是多少?
- objective-c - 将TV菜单按钮设置为返回一个屏幕
- javascript - 为什么javascript不能注册getSignedUrl()(云函数)?