pyspark 在Spark Dataframe 中查找字符串中最后出现的空格并替换为':'

pcrecxhr  于 2022-12-22  发布在  Spark
关注(0)|答案(2)|浏览(136)

我在spark dataframe列中用空格分隔了字符串格式的日期和时间,如下所示-

DTC
11 AUGUST 2012 10:12
12 AUGUST 2012 10:12
13 AUGUST 2012 10:12

我想在同一列中用“:”替换每个日期中的最后一个空格。输出应如下所示

DTC
11 AUGUST 2012:10:12
12 AUGUST 2012:10:12
13 AUGUST 2012:10:12

有什么建议吗?

smdnsysy

smdnsysy1#

匹配

^(.*) (.*)$

并替换为

\1:\2

匹配:

  • ^-线锚的起点
  • (.*)-匹配并捕获后跟空格的零个或多个字符,greedy
  • (.*)-匹配并捕获零个或多个字符
  • $-线端锚

替代品:

  • \1-第一次捕获
  • :-文字:
  • \2-第二次捕获

Demo

68bkxrlz

68bkxrlz2#

日期和时间戳转换在python中得到了很好的满足。熟悉日期和时间戳函数会保存你的堆。
使用pyspark的到to_timestamp和使用date_format的格式将字符串强制为时间戳
数据类型

df=spark.createDataFrame([ ( 1 , '11 AUGUST 2012 10:12' ),
     ( 1  ,'12 AUGUST 2012 10:12')],
    ('id' ,'DTC'  ))

代码

df.withColumn('DTC',date_format(to_timestamp('DTC',"dd MMMM yyyy HH:mm"),"dd MMMM yyyy:HH:mm")).show()

结果,结果

+---+--------------------+
| id|                 DTC|
+---+--------------------+
|  1|11 August 2012:10:12|
|  1|12 August 2012:10:12|

相关问题