【发布时间】:2018-10-22 17:26:51
【问题描述】:
我有一个数据框,它有很多列,近 50 多列(如下所示),
+----+----+---+----+----+---+----+---+----+----+---+...
|c1 |c2 |c3 |c4 |c5 |c6 |c7 |c8 |type|clm |val |...
+----+----+---+----+----+---+----+---+----+----+---+...
| 11| 5.0|3.0| 3.0| 3.0|4.0| 3.0|3.0| t1 | a |5 |...
+----+----+---+----+----+---+----+---+----+----+---+...
| 31| 5.0|3.0| 3.0| 3.0|4.0| 3.0|3.0| t2 | b |6 |...
+----+----+---+----+----+---+----+---+----+----+---+...
| 11| 5.0|3.0| 3.0| 3.0|4.0| 3.0|3.0| t1 | a |9 |...
+----+----+---+----+----+---+----+---+----+----+---+...
我想将一列值转换为多列,所以想使用下面的代码
df.groupBy("type").pivot("clm").agg(first("val")).show()
这是将行值转换为列,但其他列(c1 到 c8)不会作为结果数据框的一部分出现。
那么可以用下面的方法来获取pivot之后的所有cloumns
df.groupBy("c1","c2","c3","c4","c5","c6","c7","c8","type").pivot("clm") .agg(first("val")).show()
【问题讨论】:
标签: scala apache-spark apache-spark-sql