Pyspark中如何计算DataFrame两列的最大值生成新列
PySpark取多列最大值生成新列的正确实现
你调用的是Python内置的max()函数,该函数仅支持传入1个可迭代对象作为参数,不支持直接传入多个列名用于PySpark DataFrame的列级计算,所以会触发参数数量不匹配的报错。
正确实现方式如下:
- 首先导入PySpark SQL提供的
greatest函数,该函数专门用于返回多列中的最大值
from pyspark.sql.functions import greatest
- 调用
greatest函数生成新列
df = df.withColumn("new_col", greatest("col1", "col2"))
注意:如果参与计算的列存在空值(NULL),
greatest会直接返回空值。如果需要忽略空值计算,可以结合coalesce函数将空值替换为默认值后再计算,示例如下:from pyspark.sql.functions import greatest, coalesce, lit # 此处将空值默认替换为0,可根据业务需求调整默认值 df = df.withColumn("new_col", greatest(coalesce("col1", lit(0)), coalesce("col2", lit(0))))
内容的提问来源于stack exchange,提问作者Logic_Problem_42
相关产品推荐
相关产品推荐

