将日期拆分为年、月、日,且分隔符不一致

2024-04-07

我正在尝试将我的日期列(现在是字符串类型)拆分为 3 列“年”、“月”和“日期”。我使用(PySpark):

split_date=pyspark.sql.functions.split(df['Date'], '-')     
df= df.withColumn('Year', split_date.getItem(0))
df= df.withColumn('Month', split_date.getItem(1))
df= df.withColumn('Day', split_date.getItem(2))

我遇到了一个问题,因为我的日期有一半是用“-”分隔的,另一半是用“/”分隔的。如何根据用例使用“and or”操作将日期按“-”或“/”分割。另外,用“/”分隔时,格式为mm/dd/yyyy,用“-”分隔时,格式为yyyy-mm-dd。

我希望将日期列分为日、月和年。


您只需要一点额外的编码来识别日期格式的类型。 例如,假设您的数据采用以下格式 -

data = [("2008-05-01",1),("2018-01-01",2),("03/14/2017",3),("01/01/2018",4)]
df = spark.createDataFrame(data,schema=['date','key'])

df.show()

:

+----------+---+
|      date|key|
+----------+---+
|2008-05-01|  1|
|2018-01-01|  2|
|03/14/2017|  3|
|01/01/2018|  4|
+----------+---+

:

from pyspark.sql.functions import *
from pyspark.sql.types import *

# udf that recognise pattern and return list of year,month and day
def splitUDF(row):
    if "/" in row:
        mm,dd,yyyy = row.split("/")
    elif "-" in row:
        yyyy,mm,dd = row.split("-")

    return [yyyy,mm,dd]


datSplitterUDF = udf(lambda row : splitUDF(row),ArrayType(StringType()))
df\
.select(datSplitterUDF(df.date).alias("dt"))\
.withColumn('year',col('dt').getItem(0).cast('int'))\
.withColumn('month',col('dt').getItem(1).cast('int'))\
.withColumn('day',col('dt').getItem(2).cast('int'))\
.show()

output:

+--------------+----+-----+---+
|            dt|year|month|day|
+--------------+----+-----+---+
|[2008, 05, 01]|2008|    5|  1|
|[2018, 01, 01]|2018|    1|  1|
|[2017, 03, 14]|2017|    3| 14|
|[2018, 01, 01]|2018|    1|  1|
+--------------+----+-----+---+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将日期拆分为年、月、日,且分隔符不一致 的相关文章

随机推荐

  • 防止对 Web 应用程序的字典攻击

    防止字典攻击的最佳方法是什么 我已经想到了几种实现方式 但它们似乎都存在一些缺陷 X 次登录尝试失败后锁定用户 问题 很容易变成拒绝服务攻击 在短时间内锁定许多用户 逐渐增加用户名每次登录尝试失败的响应时间 问题 字典攻击可能使用相同的密码
  • 如何从指令获取角度视图层次结构?

    角度版本 6 我正在研究一个可以放置在任何元素上的指令 以用于一般使用日志记录 对于上下文 它看起来类似于以下内容 Directive selector log export class LogDirective Input log str
  • 替换 Woocommerce 3.4 中的 woocommerce_add_order_item_meta 挂钩

    我有自定义代码使用 woocommerce add order item meta 挂钩 但 woocommerce 3 4 0 显示错误日志 自版本 3 0 0 起 woocommerce add order item meta 已弃用
  • StoreKit 的 SKStoreProductViewController 在导航栏和视图之间留有空间?

    我有 UIViewController 的子类 它显示SKStoreProductViewController 该视图控制器最初是为 iOS 5 创建的 不使用自动布局 我的问题是 当SKStoreProductViewController
  • Phonegap:在 Android 中调整键盘显示上的 webview 大小

    我有一个类似的模态 有固定定位 Facebook 在最新的 Android 版本中对 Messenger 中的 feed chat 中的评论有何评论 我想要的看起来类似于 因此 当您专注于输入时 键盘会打开并缩小网络视图 默认情况下它不起作
  • 如何检查 YouTube 上是否存在某个频道?

    如果我做一个curl请求此网址 https www googleapis com youtube v3 channels part snippet 2CcontentDetails 2Cstatistics id UC x5XG1OVP6u
  • 将唯一 ID 实现为 UUID 并将其保存在 Keychain 中

    我的应用程序中需要唯一 ID 我知道 我们不能再使用 UDID 因此根据我的研究 使用 UUID 作为设备唯一 ID 并将其保存在钥匙串中将确保即使用户重新安装我的应用程序 唯一 ID 仍保持不变 我从 stackoverflow 上类似问
  • Perl 正则表达式中缺少最后一个字符

    记录小狗 记录需求 log s log 它的工作原理是在末尾 s 处缺少字符 如下所示 狗 需要 log s log 你不需要否定
  • OAuth 2.0 中的客户端密钥

    要使用 google Drive api 我必须使用 OAuth2 0 进行身份验证 我对此有一些疑问 客户端 ID 和客户端密钥用于识别我的应用程序是什么 但如果是客户端应用程序 则必须对它们进行硬编码 所以 每个人都可以反编译我的应用程
  • Linearlayout 中的背景图像

    我正在为我正在使用的线性布局的背景设置图像 我遇到的问题是标题栏下方的白色边框 如果我将背景设置为某种颜色 则不会出现白色边框 有谁知道可能是什么原因造成的 我正在动态加载一些内容 但这是 xml
  • FFmpeg RTP 流媒体错误 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想通过 FFmpeg 播放视频文件 但出现此错误 RTP 复用器仅支持一种流 当我写这个时 我得到了这个错误 ffmpeg exe i SomeVi
  • 如何在二维数组中找到北、东、南、西和对角邻居?

    我正在开发一个 2D 程序生成的 Unity 游戏 我想知道如何获得四个基本方向 N E S W 以及四个基本方向 NE SE 西南 西北 我想要实现的目标的示例 如果我们将单元格坐标视为row and column 您可以通过查看我们正在
  • 如何在线程中使用 telethon

    我想在后台运行一个函数 所以我在我的代码中使用线程 但返回错误ValueError signal only works in main thread并且不知道两件事 主线程是什么 如何解决这个问题呢 views py def callbac
  • 资源、放置它们的位置以及如何在 C# 中引用它们

    我已经使用 C 和其他编程语言有一段时间了 很遗憾地说我不熟悉有关在哪里放置程序图标等资源以及如何在代码中引用它们的标准 具体来说 对于 C Windows 窗体应用程序 将我的图标资源放在哪里比较合适 以及将它们放在正确的位置后引用它们的
  • 评估树遍历递归算法中是否可能出现堆栈溢出错误 (Java)

    从理论上 即不实际执行 确定某种树遍历递归算法将在 Java 中产生堆栈溢出的情况的最佳方法是什么 为了澄清我的问题 请考虑以下示例 给定一个用 Java 实现的简单二叉树 public class Node private int val
  • 自动镜像 git 存储库

    使用外部 Subversion 存储库的副作用之一是在每次提交时都会自动进行异地备份 我想使用 Git 来实现同样的目标 即 对本地存储库的每次提交都会自动提交到外部存储库 因此这两个存储库始终保持同步 我认为提交后挂钩将是最佳选择 有人有
  • Android Studio不理解Log函数

    一般来说 我对 Android 编程相当陌生 并且在打印到我的日志时遇到问题 我正在使用 Log v 来执行此操作 但收到错误 无法解析符号 v 这是代码 import android util Log public class Dress
  • 检查 CBPeripheralManager.authorizationStatus() 现在它已被弃用

    CBPeripheralManager authorizationStatus and CBPeripheralManagerAuthorizationStatus根据苹果文档已弃用 现在检查用户是否已授予在后台使用蓝牙的权限的正确方法是什
  • 将 SQL 粘贴到 MySQL 命令行

    我有一个正在定义一些 SQL 代码的应用程序 mySql SELECT sq question qs title sq id as question id sq type qs id as option id sri title as ra
  • 将日期拆分为年、月、日,且分隔符不一致

    我正在尝试将我的日期列 现在是字符串类型 拆分为 3 列 年 月 和 日期 我使用 PySpark split date pyspark sql functions split df Date df df withColumn Year s