簡體   English   中英

查找字符串之間的完全匹配

[英]Find exact match between strings

我正在嘗試創建一個函數來獲取 df 列的某些字符串,前提是與列表中的字符串完全匹配。 這是一個例子:

my_list = ['Lys', 'Lysol', 'Cla', 'Clarins']

def test(row):
   for i in my_list:
      if i in row['Product']:
         return i
      else:
         return row['Product']

df['Exact_match'] = df.apply(test, axis=1)

輸出:

產品 完全符合
來蘇爾消毒劑 賴氨酸
餐巾賴氨酸 賴氨酸
奶油嬌韻詩 奶油嬌韻詩

但是,我無法實現我的目標。 這是我想要得到的預期輸出:

產品 完全符合
來蘇爾消毒劑 來蘇爾
餐巾賴氨酸 賴氨酸
奶油嬌韻詩 嬌韻詩

這應該有效,無論您的列表有多長以及您如何排序:

def find_str(row, list_):
    words = row.split(' ')
    for elem in words:
        for search_str in list_:
            if search_str in elem:
                return elem
    
    return row

df['Exact_match'] = df['Product'].apply(find_str, list_=my_list)

重新排序搜索,使其首先是最長的字符串,並且還使用.str.extract而不是應用函數,例如:

df['Product'].str.extract('(Clarins|Lysol|Lys|Cla)')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM