我想做的是获得两行的窗口的最大值。并删除最后一行,因为它只计算一行。
例如,下面是源数据<表类>秒值 tbody><<tr>225 1.5 245 0.5 300 2.4 319 1.2 320 4.6 表类>
您可以根据降序秒分配行号,并使用过滤器删除最后一行:
from pyspark.sql import functions as F, Window
df2 = df.withColumn(
'max',
F.max('value').over(Window.orderBy('seconds').rowsBetween(0, 1))
).withColumn(
'rn',
F.row_number().over(Window.orderBy(F.desc('seconds')))
).filter('rn != 1').drop('rn', 'value')
df2.show()
+-------+---+
|seconds|max|
+-------+---+
| 319|4.6|
| 300|2.4|
| 245|2.4|
| 225|1.5|
+-------+---+