如何分组和合并Spark DataFrame的组的这些行

问题描述

假设我有一个这样的表,

A  | B  |    C     | D  |  E  | F
x1 | 5  | 20200115 | 15 | 4.5 | 1
x1 | 10 | 20200825 | 15 | 5.6 | 19
x2 | 10 | 20200115 | 15 | 4.1 | 1
x2 | 10 | 20200430 | 15 | 9.1 | 1

我希望将这些行合并到col A上,并生成这样的数据框

A  | B  |    C     | D  |  E  | F
x1 | 15 | 20200825 | 15 | 5.6 | 19
x2 | 10 | 20200115 | 15 | 4.1 | 1
x2 | 10 | 20200430 | 15 | 9.1 | 1

基本上,如果A列中组的B列之和等于D列的值,则

  1. B列的新值将是B列的总和
  2. 将根据C列的最新值(YYYYmmDD中的日期)提取C,E,F列

由于对于X2组,上述条件不成立(即B列的总和大于20且D列的15等于15),所以我想将两个记录都保留在目标中

假设:在我的数据中,给定组的D列将是相同的(在本例中为15)

我看过很多分组和窗口化(partitioning)示例,但是在我看来这是不同的,因此我无法缩小范围。

我可以将分组数据通过管道传输到UDF并执行某些操作吗?

PS:在pyspark中构建它,如果您的示例可以在pyspark中,那就太好了

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)