将不同的值数量转换为 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|
+------+---------------+-------+
我有一个这样的数据框:
+--------------------+------------------------+
| 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|
+------+---------------+-------+