我有一个长度为n的熊猫系列,我希望通过该系列实现以下目标:
for each element in the series:
compare element to all elements in series
save result of comparison
这将导致一个具有(n * n)比较结果的DataFrame。其中一半将是冗余重复项,因此实际预期结果将是大小为n * n / 2的该数据帧的一半。
目前,我已经通过嵌套两个.apply()函数来实现此目的,如下所示:
data = *pandas Series containing strings*
result['data'] = data
result['calculation'] = data.apply(lambda x: f(data, x))
def f(x, y):
ret = []
ret = x.apply(lambda x: comparison(x, y)) # comparison is in this case 'from Levenshtein import ratio'
ret = ret.tolist()
return ret
这将使DataFrame的“结果”具有result ['data']作为原始的字符串系列,而result ['calculation']具有包含len = n的列表以及每个计算值的Series。
因此,这是可行的,但1)它还会计算结果矩阵的冗余下半部分; 2)在任何情况下,对于较大的数据集来说都是很耗时的。有更好的方法吗?