我正在研究一个 pyspark 数据框,如下所示
ID | 类别 |
---|---|
1 | A |
1 | A |
1 | 乙 |
2 | 乙 |
2 | A |
3 | 乙 |
3 | 乙 |
3 | 乙 |
我想拆开类别列并计算它们的出现次数。所以,我想要的结果如下所示
ID | A | 乙 |
---|---|---|
1 | 2 | 1 |
2 | 1 | 1 |
3 | 无效的 | 3 |
我尝试在互联网上寻找可以帮助我的东西,但我找不到任何可以给我这个特定结果的东西。
简短版本,不必执行多个 groupBy
df.groupBy("id").pivot("category").count().show()
Run Code Online (Sandbox Code Playgroud)
试试这个——(不确定它是否优化)
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)