Я не уверен, каков ваш ожидаемый результат, но вы можете сделать что-то с fuzzywuzzy
, что соответствует процентному соотношению:
давайте предположим, что это df:
df4 = pd.DataFrame({'Product_detail': ['butter', 'amul butter', 'amul milk', 'milk'],'D': ['g', 'Kg', 'l', 'ml'],'F': ['500', '1', '1', '1000']})
Product_detail D F
0 butter g 500
1 amul butter Kg 1
2 amul milk l 1
3 milk ml 1000
, тогда выможете создать список вариантов и использовать process.extract ()
from fuzzywuzzy import fuzz, process
# create a list of choices from df['Product_detail']
choices = list(df4['Product_detail'].values)
# use fuzzywuzzy's process.extract()
# limit is the number of returned results
process.extract('amul butter', choices, limit=3)
out:
[('amul butter', 100), ('butter', 90), ('amul milk', 59)]
, если вы не хотите, чтобы процент совпадал, тогда сделайте понимание списка:
result = process.extract('amul butter', choices, limit=3)
# list comprehension to remove the percent
[x[0] for x in result]
out:
['amul butter', 'butter', 'amul milk']
, если вы хотите вернуть свой df:
# list comprehension to remove the percent
result_list = [x[0] for x in result]
# if you want to return your df
df4[df4['Product_detail'].isin(result_list)]
Product_detail D F
0 butter g 500
1 amul butter Kg 1
2 amul milk l 1