Skip to main content

first

Returns the first value in a group. The function by default returns the first values it sees. It will return the first non-null value it sees when ignoreNulls is set to true. If all values are null, then null is returned. The function is non-deterministic because its results depends on the order of the rows which may be non-deterministic after a shuffle.

Syntax

Python
from pyspark.sql import functions as sf

sf.first(col, ignorenulls=False)

Parameters

Parameter

Type

Description

col

pyspark.sql.Column or column name

Column to fetch first value for.

ignorenulls

bool

If first value is null then look for first non-null value. False by default.

Parameter

Type

Description

col

pyspark.sql.Column or column name

Column to fetch first value for.

ignorenulls

bool

If first value is null then look for first non-null value. False by default.

Returns

pyspark.sql.Column: first value of the group.

Examples

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([("Alice", 2), ("Bob", 5), ("Alice", None)], ("name", "age"))
df = df.orderBy(df.age)
df.groupby("name").agg(sf.first("age")).orderBy("name").show()
Output
+-----+----------+
| name|first(age)|
+-----+----------+
|Alice| NULL|
| Bob| 5|
+-----+----------+

To ignore any null values, set ignorenulls to True:

Python
df.groupby("name").agg(sf.first("age", ignorenulls=True)).orderBy("name").show()
Output
+-----+----------+
| name|first(age)|
+-----+----------+
|Alice| 2|
| Bob| 5|
+-----+----------+