如何提取框架内的特定关键字并仅提取分隔符中的数据

我有一列数据如下:


abc|frame|gtk|enst.24|pc|hg|,abc|framex|gtk4|enst.35|pxc|h5g|,abc|frbx|hgk4|enst.23|pix|hokg|

abc|frame|gtk|enst.15|pc|hg|,abc|framex|gtk2|enst.59|pxc|h5g|,abc|frbx|hgk4|enst.18|pif|homg|

abc|frame|gtk|enst.98|pc|hg|,abc|framex|gtk1|enst.45|pxc|h5g|,abc|frbx|hgk4|enst.74|pig|hofg|

abc|frame|gtk|enst.34|pc|hg|,abc|framex|gtk1|enst.67|pxc|h5g|,abc|frbx|hgk4|enst.39|pik|hoqg|

我想在框架内搜索和提取特定关键字,并仅提取分隔符中的数据


具体关键字是


enst.35

enst.18

enst.98

enst.63

预期的输出是


abc|framex|gtk4|enst.35|pxc|h5g|

abc|frbx|hgk4|enst.18|pif|homg|

abc|frame|gtk|enst.98|pc|hg|

NA

我在这里试过但没有有效地工作


牛魔王的故事
浏览 77回答 3
3回答

偶然的你

您可以使用给定的构建正则表达式模式,keywords然后使用它Series.str.findall来查找所有出现的正则表达式系列:import rekeywords = ['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                                 NaNName: col, dtype: object您可以测试正则表达式模式here

慕标琳琳

你可以在 bashscript 中尝试如下:for STRING in enst.35 enst.18 enst.98 enst.63; do&nbsp; tr \, \\n < file.txt | grep "$STRING" || echo NAdone

MM们

用str.extractandstr.split(',)取最后一个逗号分隔值:df['Data2']&nbsp;=&nbsp;df['Data'].str.extract('(^.*enst.35\|.+?\|.+?\||^.*enst.18\|.+?\|.+?\||^.*enst.98\|.+?\|.+?\||^.*enst.63\|.+?\|.+?\||)',&nbsp;expand=False).str.split(',').str[-1]您可以创建一个关键字列表,并根据另一个答案进行列表理解。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python