我有一个pyspark Dataframe df,其中包含列中字符串格式的日期- DTC如下所示-
DTC
11 AUG 2012 10:12
AUG 2012 10:20
13 AUG 2012 10:22
我想用连字符替换列中所有日期的前两个空格,如下所示-
DTC
11-AUG-2012 10:12
AUG-2012 10:20
13-AUG-2012 10:22
有什么建议吗?请注意,有一些部分日期在列中,以及,所以不能转换为日期数据类型,使其成为空&我会失去数据。我想保留部分日期以及。
2条答案
按热度按时间tag5nh1u1#
您可以使用
"dd MMM yyyy HH:mm"
解析带有to_date
的日期,然后使用您想要的"dd-MMM-yyyy HH:mm"
对其进行格式化,如下所示:另一种可能不太通用的方法是直接编辑字符串,其中一种方法是使用
split
,限制为3个字段和concat_ws
:wn9m85ua2#
在“部分”日期的情况下,正如在另一个答案的注解中提到的,
to_timestamp
会将它们设置为null
。在这种情况下,我会使用一些正则表达式。例如,在下面的代码中,我提取最后一个空格之前的所有内容(date
列)。然后提取最后一个空格之后的所有内容(time
列)。最后,我在日期中用连字符替换空格后将它们连接起来。注意,我修剪了日期以去掉尾部空格。其产生:
然后可以删除
date
和time
列。