在scala中将数据帧从列重新整形为行

时间:2017-12-01 07:02:33

标签: scala apache-spark pivot spark-dataframe

我想使用scala在Spark中重塑数据帧。我发现大部分示例都使用了groupBypivot。在我的情况下,我不想使用groupBy。这就是我的数据框架的样子

  tagid           timestamp value
1     1 2016-12-01 05:30:00     5
2     1 2017-12-01 05:31:00     6
3     1 2017-11-01 05:32:00     4
4     1 2017-11-01 05:33:00     5
5     2 2016-12-01 05:30:00   100
6     2 2017-12-01 05:31:00   111
7     2 2017-11-01 05:32:00   109
8     2 2016-12-01 05:34:00    95

我希望我的数据框看起来像这样,

            timestamp  1  2 
1 2016-12-01 05:30:00  5 100
2 2017-12-01 05:31:00  6 111
3 2017-11-01 05:32:00  4 109
4 2017-11-01 05:33:00  5  NA
5 2016-12-01 05:34:00 NA  95

我使用了不带groupBy的pivot,它会抛出错误。

df.pivot("tagid")
  

错误:value pivot不是org.apache.spark.sql.DataFrame的成员。

我如何转换这个?谢谢。

1 个答案:

答案 0 :(得分:1)

执行以下操作可以解决您的问题。

cordova plugin add my.plugin.name

您应该将最终数据框设为

df.groupBy("timestamp").pivot("tagId").agg(first($"value"))

有关详情,请查看databricks blog