首页 > 解决方案 > pyspark 数据框中的平均函数

问题描述

我有一个如下所示的数据框

在此处输入图像描述

用户提供一个值,我想从高于该特定值的所有行中计算元组中第二个数字的平均值。

示例:假设值为 10。我想获取“值”列中值大于或等于 10 的所有行并计算这些行的平均值。在这种情况下,它将占用前两行,输出如下所示 在此处输入图像描述

有人可以帮我吗?

标签: pyspark

解决方案


另一种选择:可以先过滤数据框,再计算平均值;使用getItem方法访问value1结构列中的字段:

import pyspark.sql.functions as f

df.filter(df.value >= 10)
  .agg(f.avg(df.tuple.getItem('value1')).alias('Avg'), 
       f.lit(10).alias('value')
  ).show()

+------+-----+
|   Avg|value|
+------+-----+
|2200.0|   10|
+------+-----+

推荐阅读