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

Spark DataFrame如何按指定条件对列求和并赋值给变量

错误原因

你的原有代码存在两个核心问题:

  • 缺失了「球员姓名以'D'开头」的判断逻辑
  • F.when()的使用位置错误:你把when和sum作为两个独立的聚合参数传给了agg,正确的逻辑是将条件判断放在sum内部,仅对符合条件的行的points值做累加

修正后代码

import pyspark.sql.functions as F 

point_sum = df.agg(
    F.sum(
        F.when(
            # 同时满足两个条件才取points值参与求和
            (F.col('name').startswith('D')) & (F.col('age') < 20),
            F.col('points')
        ).otherwise(0) # 不符合条件的行贡献0,可省略,显式写出来逻辑更清晰
    )
).collect()[0][0]

结果验证

对照你提供的样例数据,只有Doug符合「D开头+年龄小于20」的要求,最终point_sum的结果为7,和预期一致。

内容的提问来源于stack exchange,提问作者Sam Odle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:54:07