如何将特定列更改为行标题并在 pySpark 中制作矩阵?

How to change the a particular column as a row heading and make a matrix in pySpark?

我的数据框示例如下。

id Header One value total
1 A 10 30
1 B 5 40
2 A 12 50
2 B 5 60
3 A 14 70
3 B 10 80

我想将其转换为一个矩阵,其中行对应于不同的 id,列对应于不同的 Header,矩阵的条目是总值。行应命名为 1、2、3,列应命名为 A、B。因此,一个 3x2 矩阵的条目作为总值。我该怎么做?

结果输出应该如下,

A B
1 30 40
2 50 60
3 70 80

我尝试删除列并单独考虑条目,但没有成功。

结果输出应该如下,

A B
1 30 40
2 50 60
3 70 80

这是一个典型的row-to-column问题,使用sparkpivot函数实现

df = df.groupBy('id').pivot('Header One').agg(F.sum('total'))
df.show(truncate=False)