从Spark
1.6开始,您可以使用
pivotfunction
GroupedData并提供聚合表达式。
pivoted = (df .groupBy("ID", "Age") .pivot( "Country", ['US', 'UK', 'CA']) # Optional list of levels .sum("Score")) # alternatively you can use .agg(expr))pivoted.show()## +---+---+---+---+---+## | ID|Age| US| UK| CA|## +---+---+---+---+---+## |X01| 41| 3| 1| 2|## |X02| 72| 4| 6| 7|## +---+---+---+---+---+电平可以省略,但如果提供,则可以提高性能并用作内部滤波器。
该方法仍然相对较慢,但肯定胜过了在JVM和Python之间手动传递数据。



