hot*_*_02 3 python apache-spark apache-spark-sql pyspark
我对 pyspark 比较陌生。我想生成一个数据框列,其日期在两个给定日期(常量)之间,并将该列添加到现有数据框。有效的方法是什么?
我尝试了这个但没有成功:
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')"))
Run Code Online (Sandbox Code Playgroud)
您可以使用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|
#+---+----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4062 次 |
| 最近记录: |