如何将Nx3火花数据帧转换为NxN矩阵,第三列数据帧是矩阵的值?
问题描述:
我有一个火花数据帧的形式如何将Nx3火花数据帧转换为NxN矩阵,第三列数据帧是矩阵的值?
id | day |value
-----| ----- | -----
101 | 1 | 34
101 | 2 |26
102 | 2 |43
102 | 1 |12
我想将其转换为一个矩阵这样
1 | 2
---------------
101 | 34 | 26
102 | 12 | 43
在R,acast功能是有在reshape2包,它不完全一样的东西,即采取3列的数据帧,并将其转换为矩阵。我想在Spark Scala中做同样的事情。
我在Zeppelin 0.7.2界面中使用spark 2.1。
答
鉴于数据帧
+---+---+-----+
|id |day|value|
+---+---+-----+
|101|1 |34 |
|101|2 |26 |
|102|2 |43 |
|102|1 |12 |
+---+---+-----+
,你应该做到以下几点
import org.apache.spark.sql.functions._
df.orderBy("day").groupBy("id").pivot("day").agg(first("value"))
你应该有输出
+---+---+---+
|id |1 |2 |
+---+---+---+
|101|34 |26 |
|102|12 |43 |
+---+---+---+
** df.groupBy( 'ID')。枢轴( '天')**在pyspark –