PySpark - 如何获取数据框中距离矩阵的上三角?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PySpark - 如何获取数据框中距离矩阵的上三角?相关的知识,希望对你有一定的参考价值。

我在PySpark数据帧中有一个距离矩阵,我试图获取数据的上(或下)三角形,并将结果放在另一个数据帧中。

例如,我正试图改变这个:

1, 2, 3, 4

2, 1, 2, 3

3, 2, 1, 2

4, 3, 2, 1

进入:

1, 2, 3, 4

0, 1, 2, 3

0, 0, 1, 2

0, 0, 0, 1

我已经看了numpy,但从我读过的内容中可以打破Spark的并发优势。

答案

数据帧不是矩阵。它们都是行的集合,但是数据帧没有这些行的严格排序。

如果数据框中有一列指示该行的row_num,那么您可以应用map函数将index < row_num的所有列设置为零。

There are matrix types in Spark,如果你使用那些,你将有权访问行和列索引。这个数据类型可以像((x, y), Value)的元组一样使用,坐标指向值。然后,当y > x时,您只需将值设置为零。


你说你已经考虑过numpy,但它会破坏Spark的并发优势。我假设你的意思是Spark的分布式并行性质?如果您的数据足够小以适应单台计算机,即不需要分发,那么您肯定会从numpy获得更好的性能。强烈建议深入研究。

以上是关于PySpark - 如何获取数据框中距离矩阵的上三角?的主要内容,如果未能解决你的问题,请参考以下文章

将矩阵转换为 Pyspark 数据框

如何在pyspark中读取和写入坐标矩阵到文件

地图距离矩阵:如何迭代数据框中的行序列并计算距离

如何从 PySpark 中的数据框中获取模式定义?

从上三角形获取矩阵的索引

python, pyspark : 获取 pyspark 数据框列值的总和