3 回答
TA贡献1841条经验 获得超3个赞
您可以使用给定的构建正则表达式模式,keywords
然后使用它Series.str.findall
来查找所有出现的正则表达式系列:
import re
keywords = ['enst.35','enst.18','enst.98','enst.63']
pattern = '|'.join([rf'[^,]+{re.escape(k)}[^,]+'for k in keywords])
result = df['col'].str.findall(pattern).str.get(0)
#print(result)
0 abc|framex|gtk4|enst.35|pxc|h5g|
1 abc|frbx|hgk4|enst.18|pif|homg|
2 abc|frame|gtk|enst.98|pc|hg|
3 NaN
Name: col, dtype: object
您可以测试正则表达式模式here
TA贡献1830条经验 获得超9个赞
你可以在 bashscript 中尝试如下:
for STRING in enst.35 enst.18 enst.98 enst.63; do
tr \, \\n < file.txt | grep "$STRING" || echo NA
done
TA贡献1886条经验 获得超2个赞
用str.extract
andstr.split(',)
取最后一个逗号分隔值:
df['Data2'] = df['Data'].str.extract('(^.*enst.35\|.+?\|.+?\||^.*enst.18\|.+?\|.+?\||^.*enst.98\|.+?\|.+?\||^.*enst.63\|.+?\|.+?\||)', expand=False).str.split(',').str[-1]
您可以创建一个关键字列表,并根据另一个答案进行列表理解。
添加回答
举报