【发布时间】:2021-04-19 17:23:28
【问题描述】:
我有这个数据框(列是字符串):
ORF ORFDesc
3 b1731 succinate-semialdehyde dehydrogenase
4 b234 succinate-semialdehyde dehydrogenase
24 b2780 L-alanine dehydrogenase
27 b753 methylmalmonate semialdehyde dehydrogenase
29 b1187 pyrroline-5-carboxylate dehydrogenase
...............................................................
1922 b1124 probable epoxide hydrolase
1923 b2214 probable epoxide hydrolase
1924 b3670 probable epoxide hydrolase
1925 b134 probable epoxide hydrolase
2382 b2579 1,3,4,6-tetrachloro-1,4-cyclohexadiene hydrolase
我需要为带有 'ORFDesc' 的行获取 'ORF' 值,其中包含带有“hydro”但仅包含 13 个字符的单词。我解释一下,字长必须是 13 个字符,而不是整个描述。
我正在使用
df['IDClass'][df['ORFDesc'].str.contains("hydro", na=False)]
为了匹配包含“hydro”的行,但我需要拒绝长度为 != 13 的行。
我想使用正则表达式,这样我就可以创建一个新的列“单词”,例如:
ORF ORFDesc word
3 b1731 succinate-semialdehyde dehydrogenase dehydrogenase
4 b234 succinate-semialdehyde dehydrogenase dehydrogenase
24 b2780 L-alanine dehydrogenase dehydrogenase
27 b753 methylmalmonate semialdehyde dehydrogenase .
29 b1187 pyrroline-5-carboxylate dehydrogenase .
...............................................................
1922 b1124 probable epoxide hydrolase hydrolase
1923 b2214 probable epoxide hydrolase hydrolase
1924 b3670 probable epoxide hydrolase ....
1925 b134 probable epoxide hydrolase ..
2382 b2579 1,3,4,6-tetrachloro-1,4-cyclohexadiene hydrolase .
然后可以通过使用“word”列中的长度来丢弃行。
会是什么模式?
编辑:
我试过了,但还是不行:
pattern = '\b(?=\w*hydro)\w+\b'
【问题讨论】: