查找字符串之间的精确匹配



我试图创建一个函数来获得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)

输出:

Exact_match来苏消毒液赖氨酸赖氨酸

无论你的列表有多长,你如何排序,这都应该可以工作:

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)')

最新更新