这是我的意见
id year month date hour minute rank
54807 2021 12 31 6 29 1.0
54807 2021 12 31 6 31 2.0
54807 2021 12 31 7 15 1.0
54807 2021 12 31 7 18 2.0
54807 2021 12 31 7 30 3.0
以下是Pandas代码:
df.loc[
df.groupby(["id", "hour"])["rank"] \
.agg(["idxmin", "idxmax"]) \
.stack()
].sort_index()
这是我的输出
id year month date hour minute rank
54807 2021 12 31 6 29 1.0
54807 2021 12 31 6 31 2.0
54807 2021 12 31 7 15 1.0
54807 2021 12 31 7 30 3.0
2条答案
按热度按时间ct2axkht1#
Spark没有行索引。可以使用monotonically_increasing_id创建递增且唯一(但不保证连续)的ID。
然后按[“id”,“hour”]分组,并将最小和最大ID聚合为数组。
最后,按[“id”,“hour”]联接,如果ID在min-max-id-array中,则过滤记录。
wooyq4lh2#
可以使用窗口函数: