如何在PySpark中创建一个交叉表,为每个类别提供唯一ID的计数?

wbrvyc0a  于 2023-02-07  发布在  Spark
关注(0)|答案(1)|浏览(150)

我有一个数据框,看起来像这样:
| 识别号|类别|
| - ------|- ------|
| 1个|A类|
| 第二章|B|
| 第二章|B|
| 第二章|C级|
| 三个|B|
| ...1000万行||
我想做一个交叉表,这将给予我计数的唯一ID为每个组合的类别..类似:
| ID计数|A类|B|C级|
| - ------|- ------|- ------|- ------|
| A类|一百五十四|一百四十四|一百六十四|
| B|一百二十三|小行星21154|二百五十四|
在类别A和类别B中也存在144个ID。
我先在类别中执行group by,然后再按类别透视。但结果不正确...类似于df.groupby('Categoy').pivot('Category').count()
你能帮我一下吗?

fzsnzjdm

fzsnzjdm1#

得到解决方案:

df2 = df.withColumnRenamed("category", "category1").join(df.withColumnRenamed("category", "category2"), "customer") \
  .crosstab("category1", "category2") \
  .orderBy("cat1_cat2") 
df2.show()

相关问题