Compartilhar via


agg (GroupedData)

Calcula agregações e retorna o resultado como um DataFrame.

As funções de agregação disponíveis podem ser:

  1. Funções de agregação internas, comoavg, , max, min, , sum. count
  2. Agrupar UDFs de pandas agregados, criados com pyspark.sql.functions.pandas_udf.

Sintaxe

agg(*exprs)

Parâmetros

Parâmetro Tipo Descrição
exprs ditado ou coluna Um mapeamento de ditado do nome da coluna (cadeia de caracteres) para funções de agregação (cadeia de caracteres) ou uma lista de expressões de agregação Column .

Devoluções

DataFrame

Observações

Funções de agregação internas e UDFs de agregação de grupo pandas não podem ser misturadas em uma única chamada para essa função.

Quando exprs é um único ditado, a chave é a coluna na qual executar a agregação e o valor é a função de agregação. Quando exprs há uma lista de Column expressões, cada expressão especifica uma agregação para computação.

Exemplos

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