如何将数据框行值转换为动态列?
How to convert dataframe rows values to dynamic columns?
我有一个dataFrame
如下
-----------------------------
| A | B | C |
-----------------------------
| 1 | col_1 | val1 |
| 1 | col_2 | val2 |
| 1 | col_3 | val3 |
| 1 | col_4 | val4 |
-----------------------------
我需要将其转换如下
-----------------------------------------------
| A | col_1 | col_2 | col_3 | col_4 |
-----------------------------------------------
| 1 | val1 | val2 | val3 | val4 |
-----------------------------------------------
如何使用 scala
+ spark-sql
做到这一点?非常感谢任何线索。
一个 groupBy 和一个 agg 子句就足够了:
df.groupBy("A").pivot("B").agg(first("C"))
首先使用 groupBy 对可能的值进行分组,然后根据键列(在您的情况下为 B)进行透视并获得值 (C)
输入
df.show
+---+-----+----+
| A| B| C|
+---+-----+----+
| 1|col_1|val1|
| 1|col_2|val2|
| 1|col_3|val3|
| 1|col_4|val4|
+---+-----+----+
输出
+---+-----+-----+-----+-----+
| A|col_1|col_2|col_3|col_4|
+---+-----+-----+-----+-----+
| 1| val1| val2| val3| val4|
+---+-----+-----+-----+-----+
我有一个dataFrame
如下
-----------------------------
| A | B | C |
-----------------------------
| 1 | col_1 | val1 |
| 1 | col_2 | val2 |
| 1 | col_3 | val3 |
| 1 | col_4 | val4 |
-----------------------------
我需要将其转换如下
-----------------------------------------------
| A | col_1 | col_2 | col_3 | col_4 |
-----------------------------------------------
| 1 | val1 | val2 | val3 | val4 |
-----------------------------------------------
如何使用 scala
+ spark-sql
做到这一点?非常感谢任何线索。
一个 groupBy 和一个 agg 子句就足够了:
df.groupBy("A").pivot("B").agg(first("C"))
首先使用 groupBy 对可能的值进行分组,然后根据键列(在您的情况下为 B)进行透视并获得值 (C)
输入
df.show
+---+-----+----+
| A| B| C|
+---+-----+----+
| 1|col_1|val1|
| 1|col_2|val2|
| 1|col_3|val3|
| 1|col_4|val4|
+---+-----+----+
输出
+---+-----+-----+-----+-----+
| A|col_1|col_2|col_3|col_4|
+---+-----+-----+-----+-----+
| 1| val1| val2| val3| val4|
+---+-----+-----+-----+-----+