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

如何在PySpark中统计唯一值?附数据集与预期输出

在PySpark中统计每种食物对应的唯一日期数量

解决方法

核心思路是按食物名称分组,对每个分组的日期列做去重计数,借助PySpark的countDistinct函数就能快速实现需求。

完整代码示例

# 导入PySpark相关模块
from pyspark.sql import SparkSession
from pyspark.sql.functions import countDistinct, regexp_replace

# 初始化SparkSession
spark = SparkSession.builder.appName("FoodDayCount").getOrCreate()

# 构造你提供的数据集
data = [
    ("Chiken", 2),
    ("Chiken", 6),
    ("Chiken", 2),
    ("Beef", 3),
    ("Chiken", 4),
    ("Beef", 6),
    ("Beef", 7)
]
df = spark.createDataFrame(data, ["Food", "Day"])

# (可选)修正输入中Chicken的拼写错误(Chiken→Chicken)
df = df.withColumn("Food", regexp_replace("Food", "Chiken", "Chicken"))

# 分组统计唯一日期数量
result_df = df.groupBy("Food").agg(countDistinct("Day").alias("Day_Count"))

# 输出结果
result_df.show()

运行结果

执行后会得到符合预期的输出:

+-------+---------+
|   Food|Day_Count|
+-------+---------+
|Chicken|        3|
|   Beef|        3|
+-------+---------+

代码说明

  • groupBy("Food"):按食物名称对数据分组
  • countDistinct("Day"):计算每个分组内日期列的唯一值数量
  • alias("Day_Count"):把聚合结果列重命名为预期的Day_Count
  • 拼写修正步骤:因为输入里的Chiken和预期输出的Chicken拼写不一致,所以添加了正则替换,若你的原始数据拼写正确可直接跳过此步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:55:17