agg (GroupedData)

Beräknar aggregerar och returnerar resultatet som en DataFrame.

De tillgängliga mängdfunktionerna kan vara:

  1. Inbyggda sammansättningsfunktioner, till exempel avg, max, min, sum, count.
  2. Gruppera aggregerade pandas-UDF:er som skapats med pyspark.sql.functions.pandas_udf.

Syntax

agg(*exprs)

Parameters

Parameter Type Beskrivning
exprs diktering eller kolumn En dikteringsmappning från kolumnnamn (sträng) till aggregerade funktioner (sträng) eller en lista över aggregerade Column uttryck.

Retur

DataFrame

Notes

Inbyggda aggregeringsfunktioner och gruppaggregerade Pandas-UDF:er kan inte blandas i ett enda anrop till den här funktionen.

När exprs är en enskild diktering är nyckeln den kolumn som ska utföra aggregering på och värdet är aggregeringsfunktionen. När exprs är en lista över Column uttryck anger varje uttryck en sammansättning som ska beräknas.

Exempel

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|
# +-----+------------+