我有兩個資料框。我需要使用以下標準在另一列中找到匹配項并回傳結果。
df1 = pd.DataFrame(
{
"Keywords": ["SYS", "SYS2", "SYS3"]
}
df2 = pd.DataFrame(
{
"Lookup": ["TEST SYSTEM", "SYS", "DUMMY" , "THIS IS SYS3"]
}
我預期的最終結果是
df2 = pd.DataFrame(
{
"LookupResults": ["SYS", "THIS IS SYS3"]
}
基本上我需要找到那些與我的關鍵字匹配的完整字串的列。注意我不希望測驗系統作為我的結果。即不偏。
到目前為止已經嘗試過了。--將關鍵字列轉換為串列
findwords = df['Keywords'].values
--將查找字串拆分為串列
df2['words'] = [set(words) for words in
df2['Lookup'].str.strip().str.split()]
--使用下面搜索
df2['match'] = df2.words.apply(lambda words: all(target_word in words for target_word in findwords))
我沒有得到想要的結果。但是,如果我執行 findwords = ['SYS'] 之類的操作,我會得到想要的結果。
顯然我是一個新手,缺少一些基礎知識。任何幫助表示贊賞。謝謝
uj5u.com熱心網友回復:
# define the pattern from Keywords in df1
# \b : word boundary
pat='\\b(' '|'.join(df1['Keywords'].values) ')\\b'
p
'\\b(SYS|SYS2|SYS3)\\b'
# extract pattern and filter using loc
df2.loc[df2['Lookup'].str.extract(pat)[0].notna()]
Lookup
1 SYS
3 THIS IS SYS3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/527068.html
標籤:细绳列表数据框相比
下一篇:反復采樣和組合串列的元素
