PySpark DataFrame单值去重计数:拆分逗号分隔标签并统计
解决PySpark拆分逗号分隔标签并统计次数的方法
你之前的代码问题在于直接对原始的逗号分隔字符串分组,统计的是整个标签组合的出现次数,而非单个标签。要实现需求,需要先拆分标签并展开为单行,再分组统计:
步骤说明
- 用
split()将逗号分隔的字符串拆分为数组 - 用
explode()将数组元素展开为独立行,每个标签占一行 - (可选)用
trim()去除标签前后的空格(避免因空格导致的重复统计,比如"tag1"和" tag1"被视为不同标签) - 对拆分后的标签列分组,用
count()统计出现次数
完整代码示例
# 导入需要的函数 from pyspark.sql.functions import split, explode, count, trim, col # 1. 拆分标签并展开为单行 tag_rows = data.select(explode(split(col("tags"), ",")).alias("raw_tag")) # 2. 清理标签(去除前后空格) clean_tags = tag_rows.select(trim(col("raw_tag")).alias("tag")) # 3. 统计每个标签的出现次数 tag_counts = clean_tags.groupBy("tag").agg(count("*").alias("occurrence_count")) # 查看结果 tag_counts.show(10)
如果你的标签字符串没有空格问题,可以省略清理标签的步骤,直接使用explode后的列分组统计。
内容的提问来源于stack exchange,提问作者slycooper
相关产品推荐
相关产品推荐

