计算聚合并返回结果作为 DataFrame.
可用的聚合函数可以是:
- 内置聚合函数,例如
avg,、maxmin、sumcount。 - 组聚合 pandas UDF,使用
pyspark.sql.functions.pandas_udf.
Syntax
agg(*exprs)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
exprs |
dict 或 Column | 从列名(string)到聚合函数(字符串)或聚合 Column 表达式列表的听写映射。 |
退货
DataFrame
备注
内置聚合函数和组聚合 pandas UDF 不能在对此函数的单个调用中混合。
当 exprs 为单个听写时,键是要对其执行聚合的列,值为聚合函数。 当是表达式列表时 exprs ,每个表达式指定要计算的 Column 聚合。
示例
import pandas as pd
from pyspark.sql import functions as sf
df = spark.createDataFrame(
[(2, "Alice"), (3, "Alice"), (5, "Bob"), (10, "Bob")], ["age", "name"])
# Group-by name, and count each group.
df.groupBy(df.name).agg({"*": "count"}).sort("name").show()
# +-----+--------+
# | name|count(1)|
# +-----+--------+
# |Alice| 2|
# | Bob| 2|
# +-----+--------+
# Group-by name, and calculate the minimum age.
df.groupBy(df.name).agg(sf.min(df.age)).sort("name").show()
# +-----+--------+
# | name|min(age)|
# +-----+--------+
# |Alice| 2|
# | Bob| 5|
# +-----+--------+
# Same as above but uses a pandas UDF.
from pyspark.sql.functions import pandas_udf
@pandas_udf('int')
def min_udf(v: pd.Series) -> int:
return v.min()
df.groupBy(df.name).agg(min_udf(df.age)).sort("name").show()
# +-----+------------+
# | name|min_udf(age)|
# +-----+------------+
# |Alice| 2|
# | Bob| 5|
# +-----+------------+