【发布时间】:2020-08-20 03:19:51
【问题描述】:
假设我有一张这样的桌子,
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列的值,那么,
- B 列的新值将是 B 列的总和
- C、E、F 列将根据 C 列中的最新(即 YYYYmmDD 中的日期)选取
由于对于 X2 组,上述条件不成立(即 B 列之和为 20 大于 D 列 15),我想保留目标中的两条记录
假设:在我的数据中,给定组的 D 列将是相同的(在本例中为 15)
我查看了一堆分组和窗口化(分区)示例,但在我看来这是不同的,我无法缩小路线范围。
我可以将分组数据通过管道传输到 UDF 并执行一些操作吗?
PS:在 pyspark 中构建,如果你的示例可以在 pyspark 中,那就太好了
【问题讨论】:
标签: pandas apache-spark pyspark apache-spark-sql grouping