【发布时间】:2020-02-17 06:53:53
【问题描述】:
嗨,我有这个看起来像的 uniprot gff 数据
+--------+--------+-------+------+------------------------------------------------------------------------------------------------------+
| Entry | check | start | end | Domains |
+--------+--------+-------+------+------------------------------------------------------------------------------------------------------+
| O75581 | Repeat | 63 | 106 | Note=LDL-receptor class B 1 |
| O75581 | Repeat | 150 | 193 | Note=LDL-receptor class B 3 |
| O75581 | Domain | 282 | 324 | Note=EGF-like 1 |
| O75581 | Domain | 1248 | 1286 | Note=LDL-receptor class A 1;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00124 |
| O75581 | Domain | 1287 | 1323 | Note=LDL-receptor class A 2;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00124 |
| O75581 | Domain | 1325 | 1361 | Note=LDL-receptor class A 3;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00124 |
| P13688 | Domain | 35 | 142 | Note=Ig-like V-type;Ontology_term=ECO:0000250;evidence=ECO:0000250|UniProtKB:P31997 |
| P13688 | Domain | 145 | 232 | Note=Ig-like C2-type 1;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00114 |
| P13688 | Domain | 237 | 317 | Note=Ig-like C2-type 2;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00114 |
| P13688 | Domain | 323 | 413 | Note=Ig-like C2-type 3;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00114 |
| P19022 | Domain | 160 | 267 | Note=Cadherin 1;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00043 |
| P19022 | Domain | 268 | 382 | Note=Cadherin 2;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00043 |
| P19022 | Domain | 383 | 497 | Note=Cadherin 3;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00043 |
| Q13586 | Domain | 132 | 200 | Note=SAM;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00184 |
| P04629 | Repeat | 90 | 113 | Note=LRR 1 |
| P04629 | Repeat | 116 | 137 | Note=LRR 2 |
+--------+--------+-------+------+------------------------------------------------------------------------------------------------------+
我正在尝试提取域名列df['Domains]。使用以下代码,我接近获得域名的前 2 3 个单词,但不能普遍使用。
for row in df['Domains']:
print(re.findall(r'Note=(\w*)(.?)(\w*)', row))
它给出了这样的东西
[('LDL', '-', 'receptor')]
[('LDL', '-', 'receptor')]
[('EGF', '-', 'like')]
[('Ig', '-', 'like')]
[('Ig', '-', 'like')]`
所以,我希望改变我的方法,让一切在Note= 之后开始,在; 或行尾之前结束。我怎样才能得到这个?
【问题讨论】:
-
请注意,如果存在矢量化 Pandas 方法,则应使用它们,在这种情况下,
Series.str.findall是您所需要的。 -
此处不适用
-
确实如此,
df['Domains'].str.findall(r'Note=([^;]*)')