Pyspark Dataframe 数据透视和 groupby 计数

Say*_*zeb 7 python pyspark

我正在研究一个 pyspark 数据框,如下所示

ID 类别
1 A
1 A
1
2
2 A
3
3
3

我想拆开类别列并计算它们的出现次数。所以,我想要的结果如下所示

ID A
1 2 1
2 1 1
3 无效的 3

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

Ath*_*thi 7

简短版本,不必执行多个 groupBy

df.groupBy("id").pivot("category").count().show()
Run Code Online (Sandbox Code Playgroud)


Rah*_*hul 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述