我有一个类似于数据框的数据:
数据框很大,有超过 8 万行,ids 列可能包含易于超过数千甚至万个逗号分隔的 id。在给定行中,逗号分隔字符串中的 ids 是唯一的。
我想构建一个数据框,计算 Jaccard 指数,即动物列中每个项与 ids 列中彼此交集的并集。例如,如果我们看猫和狗,它们的并集是 2(ids 1 和 4),交集是 4(ids 1、2、3、4),因此 Jaccard 指数为 2/4=0.5。希望数据集的格式如下:
这意味着使用行索引作为动物的名称,以便我可以快速找到相关的Jaccard指数,例如:
animal ids
cat 1,3,4
dog 1,2,4
hamster 5
dolphin 3,5
数据框很大,有超过 8 万行,ids 列可能包含易于超过数千甚至万个逗号分隔的 id。在给定行中,逗号分隔字符串中的 ids 是唯一的。
我想构建一个数据框,计算 Jaccard 指数,即动物列中每个项与 ids 列中彼此交集的并集。例如,如果我们看猫和狗,它们的并集是 2(ids 1 和 4),交集是 4(ids 1、2、3、4),因此 Jaccard 指数为 2/4=0.5。希望数据集的格式如下:
cat dog hamster dolphin
cat 1 0.5 0 0.25
dog 0.5 1 0 0
hamster 0 0 1 0.5
dolphin 0.25 0 0.5 1
这意味着使用行索引作为动物的名称,以便我可以快速找到相关的Jaccard指数,例如:
cat_dog_ji = df_new['cat']['dog']
scipy
!在这里使用scipy.distance
在性能方面更好。我正在考虑删除我的答案 ;) +1.. - Shubham Sharmaj
所需的初始内存大小为80000
行时,应该非常大,对吗? - Shubham Sharma