Вы можете создать дополнительный фрейм данных с DeviceNumber и его последней / max CreationDate.
import pyspark.sql.functions as psf
max_df = df\
.groupBy('DeviceNumber')\
.agg(psf.max('CreationDate').alias('max_CreationDate'))
, а затем присоедините max_df
к исходному фрейму данных.
joining_condition = [ df.DeviceNumber == max_df.DeviceNumber, df.CreationDate == max_df.max_CreationDate ]
df.join(max_df,joining_condition,'left_semi').show()
left_semi
объединение полезно, когда вам нужен второй кадр данных для поиска, и ему нужен какой-либо столбец из второго блока данных.