创建带有timeseries列的PySpark数据框架



我有一个初始的PySpark数据框,我想从日期列中获取MINMAX,然后用时间序列(每日日期)创建一个新的PySpark数据框,从我的初始数据框中使用MINMAX

我将使用它来连接我的初始数据框架,并找到丢失的天数(在我的初始DF列的其余部分为空)。

我尝试了许多不同的方法来构建时间序列DF,但它似乎在PySpark中不起作用。有什么建议吗?

最大列的值可以这样提取:

df.agg(F.max('col_name')).head()[0]
日期范围df可以这样创建:
df2 = spark.sql("SELECT explode(sequence(to_date('2000-01-01'), to_date('2000-02-02'), interval 1 day)) as date_col")

然后是join


完整的示例:

from pyspark.sql import functions as F
df1 = spark.createDataFrame(
[(1, '2022-04-01'),
(2, '2022-04-05')],
['id', 'df1_date'])
min_date = df1.agg(F.min('df1_date')).head()[0]
max_date = df1.agg(F.max('df1_date')).head()[0]
df2 = spark.sql(f"SELECT explode(sequence(to_date('{min_date}'), to_date('{max_date}'), interval 1 day)) as df2_date")
df3 = df2.join(df1, df1.df1_date == df2.df2_date, 'left')
df3.show()
# +----------+----+----------+
# |  df2_date|  id|  df1_date|
# +----------+----+----------+
# |2022-04-01|   1|2022-04-01|
# |2022-04-02|null|      null|
# |2022-04-03|null|      null|
# |2022-04-04|null|      null|
# |2022-04-05|   2|2022-04-05|
# +----------+----+----------+

相关内容

  • 没有找到相关文章

最新更新