熊猫相关矩阵到唯一索引/列组合的字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了熊猫相关矩阵到唯一索引/列组合的字典相关的知识,希望对你有一定的参考价值。

我正在Pandas上使用此数据集,并且目前停留在此步骤:

我有一个看起来像这样的数据框:

     id1   id2   id3   id4
id1   1    0.3   0.5   0.2
id2  0.2    1    0.4   0.7
id3   0    0.5    1    0.8
id4  0.6   0.1    0     1

现在,id<num>是指与每个消息关联的post_id。在我做了一些工作以找出这些不同消息之间的余弦相似度得分之后,上述余弦相似度矩阵是一个二维数组。

最终目标是在UI上显示并汇总看起来彼此相似的帖子。为此,我将需要id1id2以及id1id3等分数的概述。

但是,我现在有一个1的对角线(因为它们是相同的,所以很有意义),但是我该如何以更好的方式做到这一点,这样我就不必使用double for循环,并最终将其带到一种可以在数据框中像下面这样显示的状态。

我目前正在做的事情给了我这个:

id1, id1, score
id1, id2, score
id1, id3, score
id1, id4, score
id2, id1, score
id2, id2, score
id2, id3, score
id2, id4, score
id3, id4, score
id3, id1, score
id3, id2, score
id3, id3, score
id4, id1, score
id4, id2, score
id4, id3, score
id4, id4, score

我想得到的是这个:

id1, id2, score
id1, id3, score
id1, id4, score
id2, id3, score
id2, id4, score
id3, id4, score

我该如何实现?我应该将2D矩阵整形为数组吗?我觉得我在这里想念什么。

感谢您在此问题上的帮助。

答案

您可以在数据框的上三角部分插入NaNstack删除那些stack并从NaN返回的迭代器中构建一个字典:

另一答案

您可以尝试print(a) [[nan 0.3 0.5 0.2] [nan nan 0.4 0.7] [nan nan nan 0.8] [nan nan nan nan]]

另一答案

尝试一下:

以上是关于熊猫相关矩阵到唯一索引/列组合的字典的主要内容,如果未能解决你的问题,请参考以下文章

根据熊猫中的索引范围组合列的行

MySQL索引相关

MySQL索引相关 𱌑

字典列输出到标准熊猫列

将分组的聚合唯一列添加到熊猫数据框

熊猫将具有相同索引的一列值组合到列表中[重复]