[英]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.