Я пробую два сравниваемых имени, которые похожи в столбце имени в pandas dataframe. NameMatching - это функция, которая принимает в виде двух список, сравнивает их и генерирует счет. фрейм данных искры вот так:
phone,name
1234,sultan
1234,multan
1234,john
тогда я хочу вывод pandas сгруппированной карты udf вот так:
sultan,multan,0.6
sultan,john,0.1
multan,john,0.1
вот мой код:
@pandas_udf(schema, PandasUDFType.GROUPED_MAP)
def apply_model(sample_pd):
name1=[]
name2=[]
score=[]
for i in range(len(sample_pd)-1):
n1 = sample_pd.iloc[i, 4]
for j in range(i+1,len(sample_pd)):
n2 = sample_pd.iloc[j, 4]
name2.append(n2)
name1.append(n1)
sc = nameMatching(list(n1), list(n2))
score.append(sc)
return pd.DataFrame({'S': name1, 'D': name2, 'Score':score})
results = sample_data.groupby('MOBILE NUMBER').apply(apply_model)
Я получаю эту ошибку:
Файл "", строка 19, в файле apply_model "", строка 28, в nameMatching IndexError: индекс назначения списка вне диапазона