Pyspark数据框架透视和分组计数

7
我正在处理一个类似如下的pyspark dataframe:
id category
1 A
1 A
1 B
2 B
2 A
3 B
3 B
3 B
我想要将分类列进行展开,然后计算它们的出现次数。所以我想要的结果如下所示:
id A B
1 2 1
2 1 1
3 Null 3
我尝试在互联网上找到可以帮助我的东西,但我找不到能给我这个特定结果的任何信息。

1
请提供一个可复现的例子,其中包含最少的输入和期望输出。 - chrisckwong821
2个回答

7

简短版本,不必进行多个groupBy操作

df.groupBy("id").pivot("category").count().show()

4
尝试这个--(不确定是否优化)
df = spark.createDataFrame([(1,'A'),(1,'A'),(1,'B'),(2,'B'),(2,'A'),(3,'B'),(3,'B'),(3,'B')],['id','category'])
df = df.groupBy('id','category').count()
df.groupBy('id').pivot('category').sum('count').show()

enter image description here


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