Pyspark Dataframe pivot 和 groupby 计数

Pyspark Dataframe pivot and groupby count

我正在处理如下所示的 pyspark 数据框

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

我尝试在互联网上寻找可以帮助我的东西,但我找不到任何可以给我这个特定结果的东西。

试试这个——(不确定是否优化)

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()

简短版本,不必进行多个分组

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