在 pandas 中,如果我們有一個時間序列并且需要按某個頻率(例如每兩周)對其進行分組,則可以使用Grouper該類,如下所示:
import pandas as pd
df.groupby(pd.Grouper(key='timestamp', freq='2W'))
在 Spark(更具體地說,使用 Scala)中是否有此功能的等效項?
uj5u.com熱心網友回復:
您可以使用 sql 函式window。首先,如果您還沒有任何時間戳列,則從字串型別 datetime 創建時間戳列:
val data =
Seq(("2022-01-01 00:00:00", 1),
("2022-01-01 00:15:00", 1),
("2022-01-08 23:30:00", 1),
("2022-01-22 23:30:00", 4))
然后,將視窗函式應用于時間戳列,并對需要獲取每個槽的結果的列進行聚合:
val df0 =
df.groupBy(window(col("date"), "1 week", "1 week", "0 minutes"))
.agg(sum("a") as "sum_a")
結果包括計算的視窗。查看檔案以更好地理解輸入引數:https ://spark.apache.org/docs/latest/api/sql/index.html#window 。
val df1 = df0.select("window.start", "window.end", "sum_a")
df1.show()
它給:
------------------- ------------------- -----
| start| end|sum_a|
------------------- ------------------- -----
|2022-01-20 01:00:00|2022-01-27 01:00:00| 4|
|2021-12-30 01:00:00|2022-01-06 01:00:00| 2|
|2022-01-06 01:00:00|2022-01-13 01:00:00| 1|
------------------- ------------------- -----
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410848.html
標籤:
下一篇:PySpark在S3讀取時掛起
