📅  最后修改于: 2023-12-03 15:18:51.373000             🧑  作者: Mango
在Pyspark中,我们可以使用聚合功能对多个列进行操作。例如,我们可以计算每个组的平均值和中位数,同时也可以计算每个组中多个列的总和。
本文将介绍如何使用Pyspark对多个列进行聚合,并提供一些示例代码。
from pyspark.sql.functions import avg
df.groupBy(['group', 'year']).agg(avg('value1'), avg('value2')).show()
上述代码首先按group
和year
列对数据框进行分组,然后使用agg
函数对value1
和value2
列进行平均值计算。
from pyspark.sql.functions import percentile_approx
df.groupBy(['group', 'year']).agg(percentile_approx('value1', 0.5), percentile_approx('value2', 0.5)).show()
上述代码同样按group
和year
列对数据框进行分组,然后使用agg
函数对value1
和value2
列进行中位数计算。
from pyspark.sql.functions import sum
df.groupBy(['group', 'year']).agg(sum('value1'), sum('value2')).show()
上述代码按group
和year
列对数据框进行分组,并使用agg
函数对value1
和value2
列进行总和计算。
from pyspark.sql.functions import udf
from pyspark.sql.types import DoubleType
def custom_function(x, y):
return x * y
udf_custom_function = udf(custom_function, DoubleType())
df.withColumn('value3', udf_custom_function('value1', 'value2'))\
.groupBy(['group', 'year']).agg(sum('value1'), sum('value2'), sum('value3')).show()
上述代码定义了一个自定义函数custom_function
,该函数接受两个参数x
和y
并将它们相乘。然后将该函数转换为UDF类型,并使用该UDF类型计算新列value3
。最后,按group
和year
列对数据框进行分组,并使用agg
函数对value1
、value2
和value3
列进行总和计算。
总的来说,Pyspark提供了许多用于对多个列进行聚合操作的函数,使得数据处理变得更加灵活和高效。以上代码提供了一些示例,希望对你有所帮助!