我有一個帶有start_time(時間戳),ev_date(int)列的資料框。我試圖弄清楚這兩列中的日期是否是連續的。我只需要比較每個單獨列中的日期是否連續。我正在考慮使用lag函式,但不知道如何實作它。我怎樣才能找到丟失的日期?非常感謝。
輸入:
ev_date | start_time
---------------------
20220301| 2022-02-28 10:09:21.356782917
20220301| 2022-02-28 03:09:21.756982919
20220302| 2022-03-01 03:09:21.756982919
20220303| 2022-03-02 03:09:21.756982919
20220305| 2022-03-02 03:09:21.756982919 --ev_date is not right here as 20020304 is missing
20220306| 2022-03-06 03:09:21.756982919 --start_time is not right as it jumped from 03-02 to 03-06
uj5u.com熱心網友回復:
您可以添加一個具有差異的新列,然后過濾差異大于 1 天的位置。類似的東西(python 但對于 scala 類似 - 不確定您需要標簽中的哪個語言)
from pyspark.sql.functions import *
from pyspark.sql.window import Window
df1= df.withColumn("diff", datediff(df.ev_date, lag(df.ev_date, 1)
.over(Window.partitionBy("some other column")
.orderBy("ev_date")??)))
df1.filter(df1.diff > 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450230.html
標籤:Python 数据框 斯卡拉 阿帕奇火花 apache-spark-sql
下一篇:過濾案例類中的結構欄位陣列
