不要忽略 MAX 中的 NULL [重复]

问题描述 投票:0回答:1

使用此数据框:

from pyspark.sql import functions as F
df = spark.createDataFrame([(None,), (1,), (2,)], ['col_name'])
df.show()
# +--------+
# |col_name|
# +--------+
# |    null|
# |       1|
# |       2|
# +--------+

计算

MAX
默认忽略空值:

max = F.max('col_name').alias('col_name')
df.agg(max).show()
# +--------+
# |col_name|
# +--------+
# |       2|
# +--------+

有没有办法使用

MAX
进行聚合,但不忽略空值?如果存在 null,则应返回 null。

apache-spark pyspark apache-spark-sql null max
1个回答
0
投票

我们可以这样做,但它相当冗长......

max = F.when(F.expr("every(col_name is not null)"), F.max("col_name")).alias("col_name")
df.agg(max).show()
# +--------+
# |col_name|
# +--------+
# |    null|
# +--------+

Spark 3.5+(短一点):

max = F.when(F.every(~F.isnull('col_name')), F.max("col_name")).alias("col_name")
df.agg(max).show()
© www.soinside.com 2019 - 2024. All rights reserved.