我有一些数据框,其中dates列为类型为Timestamp的“ date”
+------------+--------------+-----+
| date | title|count|
+------------+--------------+-----+
| 2002-09-01|text1 | 2|
| 2003-03-01|text1 | 4|
| 2007-11-01|text1 | 4|
,我想获取相同标题在这些日期之间的所有缺失日期(以我的情况为月份),并使用count = 0初始化所有
+------------+--------------+-----+
| date | title|count|
+------------+--------------+-----+
| 2002-09-01|text1 | 2|
| 2002-10-01|text1 | 0|
| 2002-11-01|text1 | 0|
| 2002-12-01|text1 | 0|
| 2003-01-01|text1 | 0|
| 2003-02-01|text1 | 0|
| 2003-03-01|text1 | 4|
| 2003-04-01|text1 | 0|
.........
我应该将它用于Window Expression中的LEAD函数吗? 我实际上在其他线程filling dates in scala中找到了我真正需要的东西 但是我在scala方面不是很出色,在将其用于pyspark方面并不是一个新事物。我尝试过这种方法,但不确定是否正确。不胜感激!
def generate_date_series(start, stop):
return [start + datetime.timedelta(days=x) for x in range(0, (stop-start).days + 1)]
w = Window.orderBy("date")
tmpDF = df.withColumn("diff", datediff(f.lead(col("date"),1).over(w), col("date")))
.filter(col("diff")>31)
.withColumn("date", generate_date_series(explode(....)))