У меня есть серия панд, содержащая строки.
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
Но насколько я понимаю, в пандах следует избегать петель. Мой вопрос, есть ли более эффективный метод для достижения вышеизложенного (например, векторизация, понимание) с использованием парадигм панд?