简述
使用pivot函数进行透视,透视过程中可以提供第二个参数来明确指定使用哪些数据项
注意:pivot只能跟在groupby之后
示例
有如下数据
df = spark.createDataFrame([("李明","语文",82),("李明","数学",90),("李明","英语",75)
,("陈凯","语文",71),("陈凯","数学",83),("陈凯","英语",66)
,("王莉","语文",85),("王莉","数学",80),("王莉","英语",81)]
,["name","subject","score"])
df.show()
+----+-------+-----+
|name|subject|score|
+----+-------+-----+
|李明| 语文| 82|
|李明| 数学| 90|
|李明| 英语| 75|
|陈凯| 语文| 71|
|陈凯| 数学| 83|
|陈凯| 英语| 66|
|王莉| 语文| 85|
|王莉| 数学| 80|
|王莉| 英语| 81|
+----+-------+-----+
利用pivot实现行转列
pivot的第一个参数指定原数据列,第二个参数指定要新生成的数据列
from pyspark.sql import functions as F
df.groupby("name").pivot("subject",["语文","数学","英语"]).agg(F.sum("score")).show()
+----+----+----+----+
|name|语文|数学|英语|
+----+----+----+----+
|王莉| 85| 80| 81|
|陈凯| 71| 83| 66|
|李明| 82| 90| 75|
+----+----+----+----+