从一年的第一周中提取日期

时间:2020-04-29 12:30:06

标签: date pyspark timestamp dayofweek

我尝试从pyspark中提取一年中每个给定星期中的星期日的日期。周和年的格式为yyyyww。除第一周外,每个星期都可以这样做,在这种情况下,其值为空。这是示例代码和结果。

columns = ['id', 'week_year']
vals = [
     (1, 201952),
     (2, 202001),
     (3, 202002),
     (4, 201901),
     (5, 201902)
]
df = spark.createDataFrame(vals, columns)
+---+---------+
| id|week_year|
+---+---------+
|  1|   201952|
|  2|   202001|
|  3|   202002|
|  4|   201901|
|  5|   201902|
+---+---------+
df = df.withColumn("day", to_timestamp(concat(df.week_year, lit("-Sunday")), 'yyyyww-E'))

结果我得到

+---+---------+-------------------+
| id|week_year|                day|
+---+---------+-------------------+
|  1|   201952|2019-12-22 00:00:00|
|  2|   202001|               null|
|  3|   202002|2020-01-05 00:00:00|
|  4|   201901|               null|
|  5|   201902|2019-01-06 00:00:00|
+---+---------+-------------------+

您有一个主意,为什么它在第一周不起作用?同样让我感到奇怪的是,第二周而不是第一周是5.01和6.01。

1 个答案:

答案 0 :(得分:0)

如果您查看2020年的日历,则该年从星期三开始,即第一周的中间,而第一周没有星期日。 2019年也是如此。这就是为什么2020-01-05在第二周到来的原因。 enter image description here

希望这会有所帮助!