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

PySpark如何统计id出现次数并在所有原行同步展示该计数值

要实现保留所有原行并关联同id的计数,使用窗口函数即可,groupBy分组聚合会压缩分组行,不符合你的需求,完整实现代码如下:

from pyspark.sql import SparkSession
from pyspark.sql.window import Window
import pyspark.sql.functions as F

# 初始化Spark(如果你的环境已经初始化可以跳过这行)
spark = SparkSession.builder.appName("id_count_calc").getOrCreate()

# 示例DataFrame构造
data=[["1","2020-02-01"],["2","2019-03-01"],["3","2021-03-01"],["4",""],["5","2021-21-01"],["6","1900-01-01"],["6","2000-01-01"]]
df=spark.createDataFrame(data,["id","input"])

# 定义按id分区的窗口规则
id_partition = Window.partitionBy("id")
# 新增CountUnique字段,统计每个id分区下的行数
res_df = df.withColumn("CountUnique", F.count("*").over(id_partition))

# 输出指定字段,和你的预期结果完全一致
res_df.select("id", "CountUnique").orderBy("id").show()

运行后输出结果如下:

+---+-----------+
| id|CountUnique|
+---+-----------+
|  1|          1|
|  2|          1|
|  3|          1|
|  4|          1|
|  5|          1|
|  6|          2|
|  6|          2|
+---+-----------+

如果需要额外判断id是否唯一,可以再加一列计算布尔标识:

res_df = res_df.withColumn("is_unique", F.col("CountUnique") == 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:15:04