首页 > 解决方案 > 有效地将函数应用于 Pandas 系列中的每个可能配对

问题描述

我有一个包含 20k 个条目的索引熊猫系列。每个条目都是一个字符串数组。

id | value

0  | ['abc', 'abc', 'def']
1  | ['bac', 'c', 'def', 'a']
2  | ...
...|
20k| ['aaa', 'rzt']

我想将每个条目(字符串列表)与该系列的每个其他条目进行比较。我有一个复杂的比较函数,它接受两个字符串列表并返回一个浮点数。

结果应该是一个矩阵。

id | 0  |  1  |  2  | ... | 20k

0  | 1    0.5   0.4
1  | 0.5   1    0.2
2  | 0.4  0.2    1
...|
20k|

计算每个矩阵元素的结果的双循环使我的计算机花费了 3 个多小时。如何有效地应用/并行化我的比较函数?我尝试使用 numpy 数组进行广播但没有成功(没有加速)。

values = df['value'].values
broadcasted = np.broadcast(values, values[:,None])
result = np.empty(broadcasted.shape)
result.flat = [compare_function(u,v) for (u,v) in broadcasted]

标签: pythonpandasnumpy

解决方案


推荐阅读