agg (GroupedData)

Menghitung agregat dan mengembalikan hasilnya sebagai DataFrame.

Fungsi agregat yang tersedia dapat berupa:

  1. Fungsi agregasi bawaan, seperti avg, , maxmin, . sumcount
  2. UDF panda agregat grup, dibuat dengan pyspark.sql.functions.pandas_udf.

Sintaksis

agg(*exprs)

Parameter-parameternya

Parameter Tipe Deskripsi
exprs dict atau Kolom Pemetaan dict dari nama kolom (string) ke fungsi agregat (string), atau daftar ekspresi agregat Column .

Pengembalian Barang

DataFrame

Catatan

Fungsi agregasi bawaan dan UDF panda agregat grup tidak dapat dicampur dalam satu panggilan ke fungsi ini.

Ketika exprs adalah satu dict, kuncinya adalah kolom untuk melakukan agregasi dan nilainya adalah fungsi agregat. Saat exprs adalah daftar Column ekspresi, setiap ekspresi menentukan agregasi untuk dihitung.

Examples

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