python - 如何在 pyspark 数据框中转换“DD/MM/YYYY”格式的日期?
问题描述
我有一个数据框:
|2018/12/04| mop-MD00094(Kg.)| 2500.0| 147.0| 367500.0|
|2018/12/04| RSE-RM00014(Kg.)| 29000.0| 18.8| 545200.0|
|13/04/2018| BETAIN-MD00032(Kg.)| 200.0| 177.0| 35400.0|
|13/04/2018| MGL-RM00005(Kg.)| 25000.0| 42.5| 1115625.0|
|13/04/2018| MZE-RM00007(Kg.)| 24750.0| 14.1| 348975.0|
在这里,您可以看到前两行的日期格式为 YYYY/DD/MM 格式,其余为 DD/MM/YYYY 格式,我想将所有这些更改为 DD/MM/YYYY 格式。这该怎么做?
架构是:
root
|-- sDate: string (nullable = true)
|-- Items: string (nullable = true)
|-- purchasedQTY: double (nullable = true)
|-- rate: double (nullable = true)
|-- purchasedVolume: double (nullable = true)
解决方案
使用regexp_replace
:
df.withColumn("sDate", regexp_replace($"sDate", "([0-9]{4})/([0-9]{2})/([0-9]{2})", "$2/$3/$1"))
正则表达式将匹配三个捕获组中的年、月和日。重新安排的日期将用于替换旧日期。由于正则表达式只会将字符串与要替换的格式匹配,因此其他行不会发生任何事情。
推荐阅读
- json - 如何解决模板中的Angular [object object]
- stored-procedures - 将报告过滤器传递给 APEX 中的存储过程
- sql - 过滤Oracle中的重复列
- java - 如何从类文件中获取包名?
- r - 标签右侧的文本对齐放置指定左侧的位置
- ios - 导航栏在推送和弹出视图控制器时保持不变,在转换时创建奇怪的白色效果
- python - 给定的用数字序列替换字符串的程序应该用 pandas 编写
- xcodebuild - Xcode 10 构建失败 rm 权限在 /bin/sh/ 中被拒绝
- php - 输入类型文件未上传名称为 test (copy).csv 的文件
- r - 将向量传递给R中的函数