如何用PySpark将DataFrame的cp1列值除以cp2列唯一非空值计算index列
解决PySpark DataFrame计算index列的问题
实现思路
按照需求,我们需要用cp1列的每个值除以cp2列中唯一的非空值(即22.10)来生成index列。核心步骤是先提取这个非空基准值,再执行列运算。
代码实现
from pyspark.sql import SparkSession from pyspark.sql.functions import col # 初始化SparkSession(若未初始化) spark = SparkSession.builder.appName("CalculateIndex").getOrCreate() # 提取cp2列的唯一非空值作为基准值 cp2_base = df.filter(col("cp2").isNotNull()).select("cp2").first()[0] # 计算index列并更新DataFrame df = df.withColumn("index", col("cp1") / cp2_base) # 查看计算结果 df.show()
代码说明
- 用
filter(col("cp2").isNotNull())筛选出cp2非空的行,再通过first()[0]提取唯一的非空基准值22.10 - 调用
withColumn新增index列,直接通过col("cp1") / cp2_base实现除法运算 - 执行后会得到已填充
index列的完整DataFrame
内容的提问来源于stack exchange,提问作者nainika George
相关产品推荐
相关产品推荐

