Arkadaşlar selamlar,
fuzzywuzzy ile bir eşleştirme üzerinde çalışıyorum.
import pandas as pd
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
bizim = pd.read_csv('x_bizim.csv')
karsilastirma = pd.read_csv('x_tumu.csv')
# DataFrame lerden isimleri çıkartma
df1_names = list(bizim.isim.unique())
df2_names = list(karsilastirma.isim.unique())
# Eşleşme puanını döndürme
def match_names(name, list_names, min_score=0):
max_score = -1
max_name = ''
for x in list_names:
score = fuzz.ratio(name, x)
if (score > min_score) & (score > max_score):
max_name = x
max_score = score
return (max_name, max_score)
# eşleşme döngüsü
urunler = []
for x in df1_names:
match = match_names(x, df2_names, 84)
if match[1] >= 84:
bizden = str(x)
eslesen = str(match[0])
oran = str(match[1])
urunler.append([bizden, eslesen, oran])
df = pd.DataFrame(urunler,columns = ["bizim","genel","oran"])
df.to_csv('yeni.csv', encoding='utf-8', header=None, mode='a', index=False)
print(df)
2 farklı csv dosyamda bir takım ürün isimleri var ve birbiriyle verdiğim oranda eşleşmeyi sağladımı yeni biz dizi oluşturup dosyaya kaydediyor.
Ama sorun şu ki df1_names
dizisinden bir elemanın karşığından bir sonuç bulunca diziden ikinci elemana geçiyor. Ama df2_names
listesinden daha fazla sonuç bulabilir. Mesela %95 uyuşan buldu listenin altında %90 uyuşanda olabilir %100 uyuşan da. Sorun şu ki bulur bulmaz diziden ikinci olan için çalışmayı sürdürüyor.
Bu sorunu nasıl giderebilirim?
Teşekkürler