如何为存在的每一行添加新列



我正在尝试使用Spark DataFrame创建一个比较矩阵,并且是通过创建每个值的单列数据框开始的,请开始:

val df = List(1, 2, 3, 4, 5).toDF

从这里开始,我需要做的是为每一行创建一个新列,然后插入(目前),每个空间中的随机数,如这样:

  Item   1   2   3   4   5  
 ------ --- --- --- --- --- 
     1   0   7   3   6   2  
     2   1   0   4   3   1  
     3   8   6   0   4   4  
     4   8   8   1   0   9  
     5   9   5   3   6   0  

任何帮助将不胜感激!

考虑使用.pivot()函数以下函数来转置称为df的输入数据帧:

val output = df.groupBy("item").pivot("item").agg((rand()*100).cast(DataTypes.IntegerType))

这将生成一个新的数据框,并具有随机的整数值corrisponding to Row值(否则null)。

+----+----+----+----+----+----+
|item|1   |2   |3   |4   |5   |
+----+----+----+----+----+----+
|1   |9   |null|null|null|null|
|3   |null|null|2   |null|null|
|5   |null|null|null|null|6   |
|4   |null|null|null|26  |null|
|2   |null|33  |null|null|null|
+----+----+----+----+----+----+

如果您不想要null值,则可以考虑以后应用UDF。

相关内容

  • 没有找到相关文章

最新更新