Spark 熔化/将列转置为值

问题描述 投票:0回答:1

我正在尝试将表格的列转置为行

我有一张看起来像这样的桌子:

+-----+-----+-----+-------+
|Date |col_1|col_2|col_...|
+-----+-------------------+
|  1  |  0.0|  0.6|  ...  |
|  2  |  0.6|  0.7|  ...  |
|  3  |  0.5|  0.9|  ...  |
|  ...|  ...|  ...|  ...  |

结果应该是这样的:

+-----+--------+-----------+
|Date |Location|   Value   |
+-----+--------+-----------+
|  1  |   col_1|        0.0|
|  1  |   col_2|        0.6|   
|  ...|     ...|        ...|    
|  2  |   col_1|        0.6|
|  2  |   col_2|        0.7| 
|  ...|     ...|        ...|  
|  3  |   col_1|        0.5|
|  3  |   col_2|        0.9|
|  ...|     ...|        ...|

在 Pandas 中,我有以下代码可以满足我的需要

df = df.melt(id_vars=["Date"], 
               var_name="Location", 
               value_name="Value")

Pyspark 中的等效代码是什么?

我在这里看到了类似的问题:Transpose column to row with Spark

但是所有答案都假设您可以列出所有列,就我而言,我有数千列,列名称是纬度、经度坐标与其他字符串的混合。

是否有等效的方法来实现 pandas 代码在 pyspark 中的功能?

python pandas apache-spark pyspark azure-databricks
1个回答
0
投票

spark 3.4+ 中存在相同的函数pyspark.sq.DataFrale.melt并且它有一个接近的命名法:

df = df.melt(ids=["Date"], 
               values=(col_1,col_2,...),
               variableColumnName="Location", 
               valueColumnName="Value")
© www.soinside.com 2019 - 2024. All rights reserved.