假设我们有一个DataFrame df,其中有列'id'和'time'。要按'id'列中的相同值分区,并仅保留每个分区中最小的'time':
import pyspark.sql.functions as F
from pyspark.sql.window import Window
# 按'id'列的相同值分区
win = Window.partitionBy('id')
# 仅保留每个分区中最小的'time'
result = df.select('id', 'time', F.min('time').over(win).alias('min_time')) \
.where(F.col('time') == F.col('min_time')) \
.drop('min_time') \
.orderBy('id')
这将返回一个包含'id'和最小'time'值的DataFrame,其中仅包含每个'id'分区中的最小值。
下一篇:按列重新分区