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])Şeklinde bir döngüm var. iki farklı df arasında karşılaştırma yapıp 84 ve daha yüksek bir değer buldumu diziye ekliyor. birinci df (buna df1_names diyelim) de yaklaşık 400 satır var ve karşılaştırma yaptığı df (buna da df2_names diyelim) de 8000 civarı.df1_names'den birinci satırdan başlıyor ve df2_names 'den eşleşme olunca df1_names 'den ikinci satıra geçiyor ve böyle böyle 400 taneyi yapıyor. Ancak burada şöyle bir sorun var; df1_names 'den birinci satırdan başlayıp bulduktan sonra durmamalı ve devam etmeli (8000lik liste bitene kadar) çünkü belki daha başka eşleşeceği durumlar da olabilir. Bu konuyu nasıl yapabiliriz?
Bu arada beki faydası olur diye tüm kodlarımı da burada paylaşıyorum.
bizim = pd.read_csv('x_bizim.csv')
karsilastirma = pd.read_csv('x_tumu.csv')
print(bizim)
print(karsilastirma)
# DataFrame lerden isimleri çıkartma
df1_names = list(bizim.isim.unique())
df2_names = list(karsilastirma.isim.unique())
#Defining a function to return the match and similarity score of the fuzz.ratio() scorer. The function will take in a term(name), list of terms(list_names), and a minimum similarity score(min_score) to return the match.
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)
#For loop to create a list of tuples with the first value being the name from the second dataframe (name to replace) and the second value from the first dataframe (string replacing the name value). Then, casting the list of tuples as a dictionary.
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)