我在pyspark数据帧中有两个时间戳列,如下所示:
+--------------------+--------------------+
| TIME_STAMP| TIME_STAMP2|
+--------------------+--------------------+
|2020-01-03 12:58:...| null|
|2020-01-03 12:59:...| null|
|2020-01-03 13:01:...| null|
|2020-01-03 13:02:...| null|
|2020-01-03 13:04:...| null|
|2020-01-03 13:05:...| null|
|2020-01-03 13:07:...| null|
|2020-01-03 13:08:...|2020-01-03 12:58:...|
|2020-01-03 13:10:...|2020-01-03 12:59:...|
|2020-01-03 13:11:...|2020-01-03 13:01:...|
|2020-01-03 13:13:...|2020-01-03 13:02:...|
|2020-01-03 13:14:...|2020-01-03 13:04:...|
|2020-01-03 13:16:...|2020-01-03 13:05:...|
|2020-01-03 13:17:...|2020-01-03 13:07:...|
|2020-01-03 13:19:...|2020-01-03 13:08:...|
|2020-01-03 13:20:...|2020-01-03 13:10:...|
|2020-01-03 13:22:...|2020-01-03 13:11:...|
|2020-01-03 13:23:...|2020-01-03 13:13:...|
|2020-01-03 13:24:...|2020-01-03 13:14:...|
|2020-01-03 13:26:...|2020-01-03 13:16:...|
+--------------------+--------------------+
我想找到不同之处,但是,如果其中一个值为null
,则我报错。有没有办法解决这个问题?这是我得到的错误:
遇到错误:“由于数据类型不匹配,无法解析'(
TIME_STAMP
-TIME_STAMP2
)':'(TIME_STAMP
-TIME_STAMP2
)'需要(数字或日历间隔)类型,而不是时间戳;
您可以将时间戳记值转换为long并将其减去。您将在几秒钟内得到差异:
from pyspark.sql import functions as f
df.withColumn('diff_in_seconds', f.col('TIME_STAMP').cast('long') - f.col('TIME_STAMP2').cast('long'))
df.show(10, False)
请注意,如果任何值均为“ null”,则结果也将为“ null”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句