pyspark-生成一个日期列,其中包含两个给定日期之间的所有日期,并将其添加到现有的Dataframe中

oknwwptz  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(302)

我对Pypark比较陌生。我想生成一个日期介于两个给定日期(常量)之间的dataframe列,并将此列添加到现有的dataframe中。有效的方法是什么?
我试过了,但没用:

df_add_column = df.withColumn("repeat", expr("split(repeat(',', diffDays), ',')")).select("*", posexplode("repeat").alias('DATE', "val")) .drop("repeat", "val", "diffDays").withColumn('DATE', expr("date_add('2018-01-01', 'DATE')"))
dgjrabp2

dgjrabp21#

你可以用 sequence 函数生成日期,然后爆炸。例子:

from pyspark.sql import functions as F

df = spark.createDataFrame([(1,)], ["id"])

df1 = df.withColumn(
    "date", 
    F.explode(F.expr("sequence(to_date('2021-02-01'), to_date('2021-02-08'), interval 1 day)"))
)

df1.show()

# +---+----------+

# | id|      date|

# +---+----------+

# |  1|2021-02-01|

# |  1|2021-02-02|

# |  1|2021-02-03|

# |  1|2021-02-04|

# |  1|2021-02-05|

# |  1|2021-02-06|

# |  1|2021-02-07|

# |  1|2021-02-08|

# +---+----------+

相关问题