假设我有一张这样的table,
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
我正在寻找合并列上的这些行 A
生成这样的Dataframe
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列的值,那么,
b列的新值将是b列的和
c、e、f列将根据c列的最新日期(yyyymmdd中的日期)选取
因为对于组x2,上面的条件不是真的(即b列的和大于d15列),所以我想在目标中保留这两个记录
假设:在我的数据中,给定组的d列将是相同的(在本例中是15)
我已经看了一些分组和窗口(分区)的例子,但在我看来,这是不同的,我无法缩小路线。
我可以将分组的数据通过管道传输到udf并做些什么吗?
ps:在pyspark中构建这个,如果你的示例可以在pyspark中,那就太好了
2条答案
按热度按时间3xiyfsfu1#
在Pypark中,我会这样做:
9ceoxa922#
试试这个-
使用
sum
+max
带开窗功能