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

如何在PySpark中自动化统计DataFrame中各数值的重复次数

自动化统计DataFrame中指定范围内数值的重复次数

针对你的需求,完全可以通过Spark的分组聚合实现自动化统计,而且这种方法比逐个查询高效得多(尤其适合大型DataFrame,仅需扫描一次数据)。

步骤1:一次性统计所有数值的重复次数

使用groupBy按Count列分组,再用count()聚合统计每组的行数(即对应数值的重复次数):

from pyspark.sql.functions import count

# 统计所有Count值的重复次数
count_df = df_right_table_23.groupBy("Count").agg(count("*").alias("重复次数"))
# 查看结果
count_df.show()

执行后会得到类似结果:

+-----+--------+
|Count|重复次数|
+-----+--------+
|    2|       2|
|    3|       3|
|    5|       3|
|    6|       1|
|   10|       2|
|   15|       1|
|    8|       1|
|    4|       1|
+-----+--------+

步骤2:过滤出2到100的数值范围

如果只需要统计2到100之间的数值,给结果DataFrame添加过滤条件即可:

# 过滤Count在[2, 100]区间内的记录
filtered_count_df = count_df.filter((count_df.Count >= 2) & (count_df.Count <= 100))
filtered_count_df.show()

可选:转换为字典方便查询

如果需要像手动查询那样快速获取单个数值的次数,可将结果转换成Python字典:

count_dict = {row["Count"]: row["重复次数"] for row in filtered_count_df.collect()}
# 示例:查询数值2的重复次数
print(count_dict.get(2))  # 输出:2

为什么不推荐循环逐个查询?

对于大型DataFrame,循环执行where(...).count()会多次扫描整个数据集,性能极低;而分组聚合仅需扫描一次数据,效率提升非常明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:32:39