有效地将函数应用于Pandas系列中的所有可能对

时间:2019-03-11 16:55:56

标签: python pandas numpy

我有一个索引的Pandas系列,条目数为2万。每个条目都是一个字符串数组。

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]

0 个答案:

没有答案