我有一个包含字符串的熊猫系列。
import pandas as pd
a = pd.Series(['apple', 'pear', 'cherry', 'applepie'])
我想对系列中的每个项目与所有其他项目执行成对比较操作。在我的特定情况下,我想使用Fuzzywuzzy比率来计算字符串之间的相似性得分,但是我对可能适用于任何类型的成对运算的通用解决方案感到好奇。操作的结果应该是一个正方形数据框,其中应包含序列的尺寸(基本上是该序列本身的笛卡尔积)。
我使用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
但是据我了解,熊猫应该避免for循环。我的问题是,有没有一种更有效的方法可以使用熊猫范式来实现上述目标(例如,矢量化,理解)?