用pyspark按agg分组多列

时间:2019-06-20 19:11:23

标签: python apache-spark pyspark

我正在寻找下面的Spark数据帧上的groupBy agg,并获取col1,col2,col3每一列的平均值,最大值和最小值

sp = spark.createDataFrame([['a',2,4,5], ['a',4,7,7], ['b',6,0,9], ['b', 2, 4, 4], ['c', 4, 4, 9]], ['id', 'col1', 'col2','col3'])

+---+----+----+----+
| id|col1|col2|col3|
+---+----+----+----+
|  a|   2|   4|   5|
|  a|   4|   7|   7|
|  b|   6|   0|   9|
|  b|   2|   4|   4|
|  c|   4|   4|   9|
+---+----+----+----+

我已经尝试sp.groupBy('id').agg({'*':'max'})来获取所有内容的最大值,但遇到错误。

我已经尝试过sp.groupBy('id').agg({'col1':['max', 'min', 'mean']}),但这更像是熊猫传统的方式,但这是行不通的。

id  max(col1)  max(col2)  max(col3)  min(col1) min(col2) min(col3) mean(col1) ..
a   4          7          7          2         4         5         3   
b   6          4          9          2         0         4         4  
c   4          4          9          4         4         9         4  

0 个答案:

没有答案