我試圖通過使用 str.contains() 獲得與下面代碼相同的結果,但我無法獲得相同的結果。
目標是使用同時具有 'England' 和 'King' 的值過濾資料框“資料”的“問題”列。
def filter_data(data, words):
filter = lambda x: all(word.lower() in x.lower() for word in words)
return data.loc[data["question"].apply(filter)]
answer = filter_data(data, ['England', 'King'])
我的代碼:
re_filter = data[
(data.question.str.contains("(\w|\W)England(\w|\W)", regex= True, case= False))&
(data.question.str.contains("(\w|\W)King(\w|\W)", regex= True, case= False))
]
是因為錯誤的正則運算式嗎?非常感謝大家的幫助!!
uj5u.com熱心網友回復:
這是最簡單的方法:
data[data.question.str.contains(r'(?=.*England)(?=.*King)')]
uj5u.com熱心網友回復:
你可以試試:
df = pd.DataFrame(data={'question':['I have both England and King', 'I have just England', 'I have just King']})
print(df[df.question.str.contains('England') & (df.question.str.contains('King'))])
輸出:
question
0 I have both England and King
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331598.html
上一篇:用字串模式映射熊貓系列
