Freigeben über


agg (GroupedData)

Berechnet Aggregate und gibt das Ergebnis als ein DataFrame.

Die verfügbaren Aggregatfunktionen können folgendes sein:

  1. Integrierte Aggregationsfunktionen wie avg, max, min, sum. count
  2. Gruppenaggregat pandas UDFs, erstellt mit pyspark.sql.functions.pandas_udf.

Syntax

agg(*exprs)

Parameter

Parameter Typ Beschreibung
exprs Diktieren oder Spalte Eine Diktatzuordnung von Spaltennamen (Zeichenfolge) zu Aggregatfunktionen (Zeichenfolge) oder eine Liste von Aggregatausdrücken Column .

Rückkehr

DataFrame

Hinweise

Integrierte Aggregationsfunktionen und Gruppenaggregat-Pandas-UDFs können nicht in einem einzigen Aufruf dieser Funktion gemischt werden.

Wenn exprs es sich um ein einzelnes Diktat handelt, ist der Schlüssel die Spalte, für die Aggregation ausgeführt werden soll, und der Wert ist die Aggregatfunktion. Wenn exprs es sich um eine Liste von Column Ausdrücken handelt, gibt jeder Ausdruck eine zu berechnende Aggregation an.

Beispiele

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