在 Scala 中将数据框从列重塑为行
reshape dataframe from column to rows in scala
我想使用 scala 在 Spark 中重塑数据框。我发现大部分示例使用 groupBy
和 pivot
。就我而言,我不想使用 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")
error: value pivot is not a member of org.apache.spark.sql.DataFrame.
我该如何转换?谢谢。
执行以下操作应该可以解决您的问题。
df.groupBy("timestamp").pivot("tagId").agg(first($"value"))
你应该有最终的数据框
+-------------------+----+----+
|timestamp |1 |2 |
+-------------------+----+----+
|2017-11-01 05:33:00|5 |null|
|2017-11-01 05:32:00|4 |109 |
|2017-12-01 05:31:00|6 |111 |
|2016-12-01 05:30:00|5 |100 |
|2016-12-01 05:34:00|null|95 |
+-------------------+----+----+
有关更多信息,您可以查看 databricks blog
我想使用 scala 在 Spark 中重塑数据框。我发现大部分示例使用 groupBy
和 pivot
。就我而言,我不想使用 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")
error: value pivot is not a member of org.apache.spark.sql.DataFrame.
我该如何转换?谢谢。
执行以下操作应该可以解决您的问题。
df.groupBy("timestamp").pivot("tagId").agg(first($"value"))
你应该有最终的数据框
+-------------------+----+----+
|timestamp |1 |2 |
+-------------------+----+----+
|2017-11-01 05:33:00|5 |null|
|2017-11-01 05:32:00|4 |109 |
|2017-12-01 05:31:00|6 |111 |
|2016-12-01 05:30:00|5 |100 |
|2016-12-01 05:34:00|null|95 |
+-------------------+----+----+
有关更多信息,您可以查看 databricks blog