python - 如何在pyspark数据框中转换 "DD/MM/YYYY"格式的日期?

标签 python apache-spark pyspark date-formatting

我有一个数据框:

|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"))

正则表达式将匹配三个捕获组中的年、月和日。重新安排的日期将用于替换旧的日期。由于正则表达式只会匹配要替换的格式的字符串,因此其他行不会发生任何变化。

关于python - 如何在pyspark数据框中转换 "DD/MM/YYYY"格式的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52049512/

相关文章:

apache-spark - 在 DataFrame 联合之后管理 Spark 分区

python - 如何在条件下在pyspark上创建新列?

apache-spark - 我可以获取 Spark 读取的文件的元数据吗

apache-spark - 从本地 jupyter notebook 连接到 Spark 集群

python - asyncio python 3.6 代码到 asyncio python 3.4 代码

python - Django ModelForm 没有调用 clean

python - 创建使用 .isdigit 的代码

javascript - Python-SocketIO 服务器需要很长时间才能触发事件

python - 使用笔记本时将jar添加到pyspark

apache-spark - .select() 到底做了什么?