Pyspark基于多个标准得出平均值

时间:2018-03-27 22:30:01

标签: python apache-spark pyspark apache-spark-sql

我有每年的学生证和费率(学生评价)。我想计算训练开始日期和结束日期之间的平均速率(当开始和结束行被填充而不是空时):average-rate = average(start-date.rate, between rates...end-date)。让我解释一下:

这是我的数据:

ID  Year     rate      start-date      end-date
1   2015      2          2015           2017
8   2012      3          2010           2012
7   2007      12          Null          2008
1   2016      4           2015          2017
8   2010      7          2010           2012
9   2002      10          2002          null
1   2015      2          2015           2017
1   2017      8          2015           2017
8   2011      3          2010           2012

理想情况下,在此表中:

  • 在日期单元格中删除ID7ID9 null值的原因(因为我们无法找到与培训相关的平均值)。

  • 重复的行(如表格底部的两行)将缩减为一行。

  • 例如计算ID1的average_rate。 start_date是2015年,结束日期是2017年。因此,我们需要从第二列和第三列平均(2015,2016和2017)的费率。 所以对于ID1:

2015 rate = 2
2016 rate = 4
2017 rate = 8
average-rate = (14/3 = 4.66)

输出表将是

ID   avarage_rate
1     4.66
8     4.33

有什么想法吗?

0 个答案:

没有答案