Сравнить каждый элемент в серии панд со всеми значениями попарно? - PullRequest
0 голосов
/ 23 июня 2019

У меня есть серия панд, содержащая строки.

import pandas as pd

a = pd.Series(['apple', 'pear', 'cherry', 'applepie'])

Я бы хотел выполнить операцию парного сравнения для каждого элемента в серии со всеми остальными элементами. В моем конкретном случае я хотел бы вычислить оценку сходства между строками, используя коэффициент нечеткой неопределенности, но мне любопытно общее решение, которое может быть применимо к любому типу парных операций. Результатом операции должен быть квадратный фрейм данных с размерами ряда (по существу, декартово произведение ряда с самим собой).

Я достиг желаемого результата, используя цикл for:

from fuzzywuzzy import fuzz

comp_df = pd.DataFrame()
for index in a.index:
    comp_df[index] = a.apply(fuzz.ratio, args=(a[index],))

comp_df
    0   1   2   3
0   100 44  18  77
1   44  100 40  33
2   18  40  100 14
3   77  33  14  100

Но насколько я понимаю, в пандах следует избегать петель. Мой вопрос, есть ли более эффективный метод для достижения вышеизложенного (например, векторизация, понимание) с использованием парадигм панд?

...