PySpark:使用Split和withColumn将具有不同字符标记的DF列拆分为另一列

PySpark:使用Split和withColumn将具有不同字符标记的DF列拆分为另一列,pyspark,split,pyspark-dataframes,Pyspark,Split,Pyspark Dataframes,您好,我在数据框中有此列: |事件时间| 2019-12-01 00:17: 2019-12-01 00:17: 2019-12-01 00:17: 2019-12-01 00:17: 2019-12-01 00:17: ____________________________________________________________" 我想拆分event_time列,在这里,一天被放入一个day列,一小时被放入一个hour列。 这里是我到目前为止所拥有的(注意,我的数据帧称为purcha

您好,我在数据框中有此列:

|事件时间|

2019-12-01 00:17:

2019-12-01 00:17:

2019-12-01 00:17:

2019-12-01 00:17:

2019-12-01 00:17:

____________________________________________________________"

我想拆分event_time列,在这里,一天被放入一个day列,一小时被放入一个hour列。 这里是我到目前为止所拥有的(注意,我的数据帧称为purchaseDF

from pyspark.sql import functions as F

cols = F.split(purchaseDF['event_time'],'-')

dateDF = purchaseDF.withColumn('Day',cols.getItem(2))
        
dateDF.show(10)
输出也包括小时,我不确定我做错了什么。任何帮助都将不胜感激。 再一次,我想把日期的“01”移到一个新的列中


谢谢

这是因为
cols.getItem(2)
中的值将是第二个
-
之后的所有值,即
01 00:17:…

您可以使用
子字符串
只获取一天,而忽略其他日期:

purchaseDF.withColumn('Day',cols.getItem(2).substr(1,2))
或者将
event\u time
列转换为
timestamp
,并使用
dayofmonth
hour
功能:

from pyspark.sql.functions import *

purchaseDF.withColumn('event_time', col('event_time').cast("timestamp"))\
            .withColumn('Day', dayofmonth('event_time'))
            .withColumn('Hour', hour('event_time')).show()