将不同的值数量转换为 pyspark 中的列

Transforming distinct value quantities into columns in pyspark

我有一个这样的数据框:

+--------------------+------------------------+
|            category|count(DISTINCT category)|
+--------------------+------------------------+
|             FINANCE|                       1|
|              ARCADE|                       1|
|     AUTO & VEHICLES|                       1|

并希望将其转换为这样的数据框:

+--------------------+------------------------+
|            FINANCE | ARCADE | AUTO & VEHICLES|
+--------------------+------------------------+
|            1       |   1    |      1        |

但我想不出有什么办法可以做到这一点,除了非常暴力的 python 方式,我确信这种方式效率很低。有使用 pyspark 运算符的聪明方法吗?

可以使用pivot()函数,然后使用first进行聚合:

from pyspark.sql.functions import *

df.groupby().pivot("category").agg(first("count(DISTINCT category)")).show()
+------+---------------+-------+                                                
|ARCADE|AUTO & VEHICLES|FINANCE|
+------+---------------+-------+
|     1|              1|      1|
+------+---------------+-------+