在PySpark中,你可以使用pyspark.sql.functions
模块中的函数来计算行的最小值,并忽略零和空值。以下是一个示例代码,演示如何使用PySpark计算行的最小值,同时忽略零和空值:
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例数据集
data = [(1, 2, 3, 0),
(4, 5, 6, 7),
(8, 9, None, 10),
(11, 0, 13, 14),
(15, 16, 17, None)]
df = spark.createDataFrame(data, ["col1", "col2", "col3", "col4"])
# 计算行的最小值,忽略零和空值
min_values = df.select(
col("col1"),
col("col2"),
col("col3"),
col("col4"),
when(col("col1") != 0, col("col1")).otherwise(float("inf")).alias("min_col1"),
when(col("col2") != 0, col("col2")).otherwise(float("inf")).alias("min_col2"),
when(col("col3").isNotNull() & (col("col3") != 0), col("col3")).otherwise(float("inf")).alias("min_col3"),
when(col("col4").isNotNull() & (col("col4") != 0), col("col4")).otherwise(float("inf")).alias("min_col4")
)
min_values.show()
在上述示例中,我们首先创建了一个SparkSession,并使用示例数据创建了一个DataFrame。然后,我们使用when
函数和条件表达式来计算每一列的最小值。使用when
函数,我们检查每个元素是否为零或空值,如果不是,则将其保留为最小值,否则将其设置为正无穷大(float("inf")
)。最后,我们选择原始列和计算的最小值列,并显示结果。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云