PySpark:使用Split和withColumn将具有不同字符标记的DF列拆分为另一列
您好,我在数据框中有此列: |事件时间| 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列。 这里是我到目前为止所拥有的(注意,我的数据帧称为purchaseDFPySpark:使用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
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()