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]
您可以創建一個關鍵字列表,并根據另一個答案進行列表理解。
添加回答
舉報