to_date 在格式 yyyyww 上给出 null(202001 和 202053)

2023-12-08

我有一个包含年周列的数据框,我想将其转换为日期。我编写的代码似乎每周都有效,除了“202001”和“202053”周,例如:

df = spark.createDataFrame([
(1, "202001"), 
(2, "202002"), 
(3, "202003"), 
(4, "202052"), 
(5, "202053")
], ['id', 'week_year'])

df.withColumn("date", F.to_date(F.col("week_year"), "yyyyw")).show()

这几周我不知道错误是什么或如何修复。如何将 202001 和 202053 周转换为有效日期?


在 Spark 中处理 ISO 周确实是一件令人头疼的事情 - 事实上,这个功能在 Spark 3 中已被弃用(删除?)。我认为在 UDF 中使用 Python 日期时间实用程序是一种更灵活的方法。

import datetime
import pyspark.sql.functions as F

@F.udf('date')
def week_year_to_date(week_year):
    # the '1' is for specifying the first day of the week
    return datetime.datetime.strptime(week_year + '1', '%G%V%u')

df = spark.createDataFrame([
(1, "202001"), 
(2, "202002"), 
(3, "202003"), 
(4, "202052"), 
(5, "202053")
], ['id', 'week_year'])

df.withColumn("date", week_year_to_date('week_year')).show()
+---+---------+----------+
| id|week_year|      date|
+---+---------+----------+
|  1|   202001|2019-12-30|
|  2|   202002|2020-01-06|
|  3|   202003|2020-01-13|
|  4|   202052|2020-12-21|
|  5|   202053|2020-12-28|
+---+---------+----------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

to_date 在格式 yyyyww 上给出 null(202001 和 202053) 的相关文章

随机推荐

  • Cakephp 覆盖 HtmlHelper::link

    我想设置 HtmlHelper link 方法 以便默认选项数组具有 escape false 如何在不改变核心类的情况下实现这一目标 OBS 我已经清理了表单输入 所以我想这不会有问题 提前致谢 蛋糕2 1 5 我刚刚实现了这个 我想指出
  • 使用 f2py 将 numpy 字符串格式数组传递给 fortran

    我的目标是从 fortran 中的 python numpy 数组打印第二个字符串 但我只打印第一个字符 而且它也不一定是正确的字符串 谁能告诉我将完整字符串数组传递给 Fortran 的正确方法是什么 代码如下 测试py import n
  • 在tasklet中退出Spring Batch作业

    我有一个 Spring Batch tasklet 但我不知道如何从它失败 我想检查某些参数 如果它们不存在 则该步骤的作业失败 Component public class Tfp211SetupTasklet extends Abstr
  • 如何在图像上使用边框半径制作插入边框

    How do to an inset border with a border radius on an image like so 我可以使用大纲 CSS 属性 img border radius 16px outline 3px sol
  • 我用的是Lua 5.1。我想解析以下模式的 XML 文件。我该怎么办?

    我尝试使用 LuaXml 库 但它的功能是有限的 因为它只返回特定属性的第一个子表 并且不会比这更进一步 然后我尝试了字符串模式匹配 它有效 但我陷入了死胡同 它无法完全完成任务 LuaExpat 库存在于我的 lua 的 lib 文件夹中
  • 检查字符串是否为数字的最快方法是什么?

    检查 2 4393 或 2 等字符串是否有效的最快方法是什么 它们都可以用双精度数表示 而字符串 2 343 或 ab 34 不是吗 特别是 我希望能够读取任何字符串 如果它can是一个双精度型 为其分配一个双精度变量 如果它不能是一个双精
  • 拆分 git 存储库

    我目前有一个 git 存储库 是我不久前从 svn name school 导入的 在这个学校存储库中 我的每个班级都有一个文件夹 我似乎无法在不丢失该类的整个历史记录的情况下获取这个存储库并将其拆分为每个类的存储库 而我不想这样做 建议
  • java.security.AccessControlException:文件可通过浏览器访问,但不能在同一服务器内访问

    因此 为了避免过多重复 请参阅与 java google endpoint api 一起提供静态图像 正如您从引用的链接中看到的 我可以通过 url 查看图像 但是 当我尝试使用类似的代码读取文件名时 public void listFil
  • 更改多个列名称,但不是全部 - Pandas Python

    我想知道是否有一个功能可以更改特定列名称 但无需选择特定名称或无需更改所有列名称 我有代码 df df rename columns nameofacolumn newname 但有了它 我必须手动更改每个人写的每个名字 还要改变我所有的
  • 如何在模板中按名称动态加载 ember 组件?

    我的问题基本上与上相同这个答案 但我无法让代码与 ember 1 7 0 和 ember cli 一起使用 我有一个widget我的模型中的属性 以及我的模板中的属性 我希望有类似的内容 each question in questions
  • Python lambda 不记得 for 循环中的参数[重复]

    这个问题在这里已经有答案了 我正在使用 python 并尝试隔离 lambda 函数遇到的问题 从下面的代码中 我期望创建两个 lambda 函数 每个函数都有一个不同的 x 输出应该是 1 2 但输出是 2 2 为什么 我怎样才能制作两个
  • Doctrine2 数组集合

    好的 我有一个 User 实体 如下所示
  • 使用 AVAudioEngine 播放 WAV 数据

    目前 我正在得到一个EXC BAD ACCESS音频线程上出现错误 我正在尝试推断出了什么问题 转换时 wav文件数据来自Data to an AVAudioPCMBuffer 我需要先剥离 RIFF 标头吗 import AVFounda
  • tinymce动态加载js时无法统一

    我在使用tinyMCE时遇到了麻烦 当我把
  • 用两种语言编写程序?

    一个程序可以用多种编程语言编写吗 我在 The Daily WTF 上读到的内容似乎暗示大公司 组织在构建大型应用程序时使用几种不同的语言 这是如何运作的 我从 Django 的工作中了解到 动态网页通常是用一堆不同的语言组合在一起的 Py
  • 碰撞检测

    大家好你们好 我如何在我的应用程序中执行 碰撞检测 像这样 http www gskinner com blog assets CDTest swf 给我一些建议 拜托 看一下CGRectContainsPoint and CGRectIn
  • 在功能测试期间如何使用 Symfony2 的会话服务保存数据?

    我正在为使用 Symfony2 会话服务获取数据的操作编写功能测试 在我的测试课上setUp方法 我调用 this gt get session gt set foo bar 如果我输出所有会话数据 使用print r this gt ge
  • 在 Matlab 中创建长度为 64、重叠度为 60% 的汉明窗

    我试图给出长度为 64 重叠率为 60 的维格纳维尔分布汉明窗here 我可以创建长度为 64 的汉明窗 h hamming 64 Here是关于这个问题的一些理论建议 窗户似乎是某种卷积三个汉明波的卷积概率为 60 重叠似乎是三个函数的某
  • 如何在wpf中的文本框中添加水印文本?

    我正在开发 wpf 应用程序 如何将水印文本添加到textbox and passwordbox
  • to_date 在格式 yyyyww 上给出 null(202001 和 202053)

    我有一个包含年周列的数据框 我想将其转换为日期 我编写的代码似乎每周都有效 除了 202001 和 202053 周 例如 df spark createDataFrame 1 202001 2 202002 3 202003 4 2020