Pyspark,按一列中的唯一值对另一列中的某个值进行分组

Bry*_*ker 4 apache-spark pyspark

这个标题,太可怕了,对不起。这是我的意思:这是起始数据集

C1   C2
AA   H
AB   M
AC   M
AA   H
AA   L
AC   L
Run Code Online (Sandbox Code Playgroud)

然后它将变成一个包含4列的新数据集:

C1   CH   CM   CL
AA   2    0    1
AB   0    1    0
AC   0    1    1
Run Code Online (Sandbox Code Playgroud)

Ram*_*jan 6

您可以将pivotapi groupByagg和其他功能一起使用,如下所示:

from pyspark.sql import functions as F
finaldf = df.groupBy("C1").pivot("C2").agg(F.count("C2").alias("count")).na.fill(0)
Run Code Online (Sandbox Code Playgroud)

你应该有finaldf作为

+---+---+---+---+
| C1|  H|  L|  M|
+---+---+---+---+
| AA|  2|  1|  0|
| AB|  0|  0|  1|
| AC|  0|  1|  1|
+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)