数据块 10.2 pyspark 3.2.0;如何根据另一个日期和整数(小时)列添加新的时间戳列?
DataBricks 10.2 pyspark 3.2.0; How Do I Add a New Timestamp Column Based on Another Date and Integer (Hours) Column?
在使用 pyspark 的 DataBricks notebook 中,我需要 create/add 基于现有日期列的新时间戳列,同时根据现有的 hours-bin 整数列向其添加小时 - 这是为了支持创建一个事件驱动的时间序列特性集,在这种情况下要求时间戳限制为日期和小时(没有分钟、秒等...)。我曾尝试使用基于字符串的 expr()
、date_add()
、各种格式化字符串和 cast()
组合,但我遇到了一系列与列访问、解析问题等相关的令人抓狂的错误。完成此操作的最简单方法是什么?
在我看来,unix_timestamp是最简单的方法:
dfResult = dfSource.withColumn("yourNewTimestampColName",
(unix_timestamp(col("yourExistingDateCol")) +
(col("yourExistingHoursCol")*3600)).cast("timestamp"))
其中 yourNewTimestampColName
表示您要添加的时间戳列的名称,yourExistingDateCol
表示必须在 dfSource
数据框中使用此名称的日期列,并且 yourExistingHoursCol
表示 integer-based 小时列,该列也必须在 dfSource
数据框中以该名称出现。
unix_timestamp()
方法以秒为单位添加日期,因此要添加小时,请将 yourExistingHoursCol
乘以 3,600 秒,要添加分钟,请乘以 60,要添加天,请乘以 3,600*24,等等。 ...
执行 display(dfResult)
应该显示 dfSource
数据框的 structure/content,其中包含名为 yourNewTimestampColName
的新列,其中包含请求的 date/hour 组合。
在使用 pyspark 的 DataBricks notebook 中,我需要 create/add 基于现有日期列的新时间戳列,同时根据现有的 hours-bin 整数列向其添加小时 - 这是为了支持创建一个事件驱动的时间序列特性集,在这种情况下要求时间戳限制为日期和小时(没有分钟、秒等...)。我曾尝试使用基于字符串的 expr()
、date_add()
、各种格式化字符串和 cast()
组合,但我遇到了一系列与列访问、解析问题等相关的令人抓狂的错误。完成此操作的最简单方法是什么?
在我看来,unix_timestamp是最简单的方法:
dfResult = dfSource.withColumn("yourNewTimestampColName",
(unix_timestamp(col("yourExistingDateCol")) +
(col("yourExistingHoursCol")*3600)).cast("timestamp"))
其中 yourNewTimestampColName
表示您要添加的时间戳列的名称,yourExistingDateCol
表示必须在 dfSource
数据框中使用此名称的日期列,并且 yourExistingHoursCol
表示 integer-based 小时列,该列也必须在 dfSource
数据框中以该名称出现。
unix_timestamp()
方法以秒为单位添加日期,因此要添加小时,请将 yourExistingHoursCol
乘以 3,600 秒,要添加分钟,请乘以 60,要添加天,请乘以 3,600*24,等等。 ...
执行 display(dfResult)
应该显示 dfSource
数据框的 structure/content,其中包含名为 yourNewTimestampColName
的新列,其中包含请求的 date/hour 组合。