从一年的第一周提取日期
extract day from the first week of year
我尝试在 pyspark 中提取一年中每个给定周的星期日日期。周和年的格式为 yyyyww。这对于除第一周以外的每一周都是可能的,在这种情况下,a 得到一个空值。这是示例代码和结果。
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是第二周,不是第一周
如果你看一下 2020 年的日历,这一年从星期三开始,也就是第一周的中间,而第一周没有星期日。 2019 年也是如此。这就是为什么 2020-01-05 将在第二周到来。
希望对您有所帮助!
我尝试在 pyspark 中提取一年中每个给定周的星期日日期。周和年的格式为 yyyyww。这对于除第一周以外的每一周都是可能的,在这种情况下,a 得到一个空值。这是示例代码和结果。
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是第二周,不是第一周
如果你看一下 2020 年的日历,这一年从星期三开始,也就是第一周的中间,而第一周没有星期日。 2019 年也是如此。这就是为什么 2020-01-05 将在第二周到来。
希望对您有所帮助!