给定今天的日期,我想计算前N个即将到来的星期天,并把它们放在一个DataFrame中。假设今天的日期是2023-05-02,N = 3,输出应该如下所示:
Date
2023-05-07
2013-05-14
2013-05-21
我尝试了以下方法:
from pyspark.sql import functions as f
from pyspark.sql.types import DateType
current_date = f.current_date()
day_offset = datetime.timedelta(6 - current_date.weekday())
first_sunday = current_date + day_offset
dates = []
for weeks in range(3):
days = weeks * 7
dates.append(first_sunday + datetime.timedelta(days=days))
out = spark.createDataFrame(dates, DateType()).toDF("Date")
这给了我以下错误:
TypeError: 'Column' object is not callable
我知道我可以使用datetime.date.today()
获得今天的日期,但我特别想使用f.current_date()
,因为我必须稍后使用@patch
来使我的测试在固定的日期运行,而我不能使用datetime.date.today()
进行日期。
先谢谢你了!
3条答案
按热度按时间7gs2gvoe1#
这就是我的尝试,也许你应该简化它:
作为输出:
mhd8tkvw2#
由于
f.current_date
创建了一个列对象,所以我认为从一个已经存在的pyspark Dataframe 开始是有意义的-我们可以将[1,2,3]
放入一个名为upcoming_sunday_number
的列中,然后按以下方式使用f.current_date
:或者更简洁地说:
请注意,在我最初的答案中,我有点粗心,将
upcoming_sunday_number
设置为string
而不是integer
,但这仍然应该编译为正确的最终结果:hk8txs483#