摘日

问题描述 投票:0回答:1

我试图在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是在第二周,而不是在第一周。

date pyspark timestamp dayofweek
1个回答
0
投票

如果你看一下2020年的日历,一年从星期三开始,这是在第一周的中间,第一周没有星期天。2019年也一样。这就是为什么2020-01-05是在第二周来的。enter image description here

希望对大家有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.