在Pyspark中将行转置为列

3

我如何将一个只有一列和多行的DataFrame表格转置,例如:

1
2
3
5
6
7
...

转换为只有一行和多列的数据框,如下所示:

1,2,3,4,5,6,7,8,9,10,...
1个回答

5

只需执行 pivot 操作:

df = spark.range(10)

df.show()
+---+                                                                           
| id|
+---+
|  0|
|  1|
|  2|
|  3|
|  4|
|  5|
|  6|
|  7|
|  8|
|  9|
+---+


df.groupBy().pivot("id").count().show()                                                                            
+---+---+---+---+---+---+---+---+---+---+                                       
|  0|  1|  2|  3|  4|  5|  6|  7|  8|  9|
+---+---+---+---+---+---+---+---+---+---+
|  1|  1|  1|  1|  1|  1|  1|  1|  1|  1|
+---+---+---+---+---+---+---+---+---+---+

df.groupBy().pivot("id").agg(F.first(F.col("id"))).show()                                                          
+---+---+---+---+---+---+---+---+---+---+                                       
|  0|  1|  2|  3|  4|  5|  6|  7|  8|  9|
+---+---+---+---+---+---+---+---+---+---+
|  0|  1|  2|  3|  4|  5|  6|  7|  8|  9|
+---+---+---+---+---+---+---+---+---+---+

非常感谢您的帮助,但我只想要一行,您提供的两种方法返回了2行。 - Atuma
我需要每个数字一个列,且只有一行。 - Atuma
不对。我的两种方法都显示1个标题和1行内容。行的内容取决于您使用的聚合函数。 - Steven
1
我需要实现与此完全相反的操作 - 我有一行,其中包含几个列,并且需要将每个列转换为不同的行.. 透视(pivot)似乎无法帮助.. 有什么想法吗? - Raghav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接