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

如何使用PySpark计算含列表的DataFrame列的整体均值?

计算PySpark DataFrame列表列中所有元素的整体均值

当然可以实现这个需求!咱们一步步来操作,最终就能得到你期望的26.6这个结果。

步骤分解

首先,我们需要把列表中的每个元素单独拆出来,转换成数值类型后再计算整体均值,具体代码如下:

  1. 导入必要的PySpark函数

    from pyspark.sql import functions as F
    
  2. 将列表列拆分为单行元素
    使用explode函数把value列里的每个列表元素拆成单独的行,这样我们就能逐个处理每个数值:

    # 假设你的DataFrame名为df
    df_exploded = df.select(F.explode("value").alias("value_str"))
    
  3. 将字符串类型转换为数值类型
    因为原列表中的元素是字符串格式,无法直接参与数值计算,所以需要转成double类型(如果确定都是整数,用integer也可以):

    df_numeric = df_exploded.withColumn("value_num", F.col("value_str").cast("double"))
    
  4. 计算整体均值
    最后用avg函数计算所有元素的平均值,再通过collect()提取结果:

    mean_result = df_numeric.agg(F.avg("value_num")).collect()[0][0]
    print(mean_result)  # 输出结果为26.6
    

验证结果

你给出的示例元素总和是:1+23+18+9+62+47+6+34+61+5 = 266,一共10个元素,266÷10=26.6,和我们的计算结果完全一致。

额外提示

如果你的DataFrame中存在空列表的情况,explode会生成null值,这时候可以在转换类型前过滤掉这些空值,避免影响计算结果:

df_exploded = df.select(F.explode("value").alias("value_str")).filter(F.col("value_str").isNotNull())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:50:20