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

PySpark SQL DataFrame按id分组实现条件判断生成bin字段的方法

解决方案

核心逻辑:将每条数据中符合code = 03/06的行标记为1,其余为0,分组后取最大值,即可保证只要该id下存在任意一条符合条件的数据,最终结果为1,否则为0。

方式1:DataFrame API 实现

from pyspark.sql import functions as F

result_df = df.groupBy("id") \
    .agg(
        F.max(
            F.when(F.col("code").isin("03", "06"), 1).otherwise(0)
        ).alias("bin")
    )

result_df.show()

方式2:Spark SQL 实现

# 注册临时视图
df.createOrReplaceTempView("source_data")

# 执行SQL查询
result_df = spark.sql("""
SELECT 
    id,
    MAX(CASE WHEN code IN ('03', '06') THEN 1 ELSE 0 END) AS bin
FROM source_data
GROUP BY id
""")

result_df.show()

注意:如果你的code字段为数值类型,将判断条件中的字符串引号去掉即可(即isin(03,06) / IN (03,06))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:24:08