来苏消毒液 赖氨酸 赖氨酸
我试图创建一个函数来获得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)')