перебор pandas datfarme в pandas udf - PullRequest
0 голосов
/ 12 марта 2020

Я пробую два сравниваемых имени, которые похожи в столбце имени в 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: индекс назначения списка вне диапазона

...