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

Spark中按列分组计算均值及分组后0值缺失问题求助

解决方案

针对你的需求,分两种常见DataFrame库给出实现代码:

1. Pandas 实现

import pandas as pd

# 构建原始数据
data = {'Col1': [0, 1, 1, 1, 0, 2], 'Value': [20, 30, 20, 10, 10, 30]}
df = pd.DataFrame(data)

# 分组计算均值,重置索引并重命名列
result_df = df.groupby('Col1')['Value'].mean().reset_index().rename(columns={'Value': 'Value2'})

print(result_df)

执行后会输出你需要的结果:

Col1  Value2
0     0    15.0
1     1    20.0
2     2    30.0

2. PySpark 实现

from pyspark.sql import SparkSession
from pyspark.sql.functions import avg

# 初始化Spark会话
spark = SparkSession.builder.appName("groupby_avg").getOrCreate()

# 构建原始数据
data = [(0, 20), (1, 30), (1, 20), (1, 10), (0, 10), (2, 30)]
df = spark.createDataFrame(data, schema=["Col1", "Value"])

# 分组聚合计算均值,并重命名结果列
result_df = df.groupBy("Col1").agg(avg("Value").alias("Value2")).orderBy("Col1")

result_df.show()

执行后输出:

+----+------+
|Col1|Value2|
+----+------+
|   0|  15.0|
|   1|  20.0|
|   2|  30.0|
+----+------+

关于你遇到的df.groupBy("Col1")看不到0值的问题

单独调用groupBy("Col1")并不会生成可见的分组结果,它只是创建了一个分组操作的中间对象(Pandas里是GroupBy对象,PySpark里是GroupedData对象)。只有在这个基础上调用聚合函数(比如mean()、sum()),才会执行实际的分组计算并返回包含所有分组(包括0)的结果DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:35:29