我有一张三栏的桌子:
我想提取每个产品的所有用例。然后,对于每个用例,用户使用该产品的百分比。以下是数据的一个示例:
product-name use-case user-ID
A therapy X
B relaxation X
C health Y
A relaxation Z输出应该如下所示:

例如,我可以说,50%的A产品用户正在使用它进行治疗,而其他50%用于放松。
非常感谢。
发布于 2018-01-30 17:19:11
分两个步骤进行聚合,然后加入:
import pyspark.sql.functions as F
(df.groupBy(['product-name', 'Use-case'])
.count()
.withColumnRenamed('count', 'User counts')
.join(
df.groupBy('product-name').count(),
['product-name']
).withColumn('User counts', F.col('User counts')/F.col('count'))
.drop('count').show())
+------------+----------+-----------+
|product-name| Use-case|User counts|
+------------+----------+-----------+
| B|Relaxation| 1.0|
| C| health| 1.0|
| A| therapy| 0.5|
| A|relaxation| 0.5|
+------------+----------+-----------+https://stackoverflow.com/questions/48526157
复制相似问题