You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:10:32