有一个如下所示的Dataframe,它有两列。
df.show()
| Time| MinTime|
|2019-11-19 23:00:...|2019-11-19 23:00:...|
|2019-11-19 23:15:...|2019-11-19 23:00:...|
|2019-11-19 23:30:...|2019-11-19 23:00:...|
root
|-- Time: string (nullable = true)
|-- MinTime: string (nullable = true)
df.show(truncate=False)
| Time| MinTime|
|2019-11-19 23:00:000000|2019-11-19 23:00:000000|
|2019-11-19 23:15:000000|2019-11-19 23:00:000000|
|2019-11-19 23:30:000000|2019-11-19 23:00:000000|
在我使用下面的代码行来处理上面的列之后,列的值 Offset
都是空的。基于中的值 Time
以及 MinTime
,所有行的差异不应为空。我可以知道原因吗?
df= df.withColumn('Offset',((col('Time').cast('long') - col('MinTime').cast('long'))))
df.show()
| Time| MinTime| Offset|
|2019-11-19 23:00:...|2019-11-19 23:00:...| null|
|2019-11-19 23:15:...|2019-11-19 23:00:...| null|
|2019-11-19 23:30:...|2019-11-19 23:00:...| null|
df.printSchema()
root
|-- Time: string (nullable = true)
|-- MinTime: string (nullable = true)
|-- Offset: long (nullable = true)
df.show(truncate=False)
| Time| MinTime| Offset|
|2019-11-19 23:00:000000|2019-11-19 23:00:000000| null|
|2019-11-19 23:15:000000|2019-11-19 23:00:000000| null|
|2019-11-19 23:30:000000|2019-11-19 23:00:000000| null|
1条答案
按热度按时间g6baxovj1#
请检查你的计划
df
,如果列类型为String
它必须转换成timestamp
第一你可以用
to_timestamp
函数将数据类型转换为timestamp
第一个as结果:
请确保使用正确的日期格式。