将Spark数据帧转换为Pandas数据帧会将时间戳转换为对象

时间:2018-01-19 22:21:25

标签: python-2.7 pandas apache-spark spark-dataframe

我有一个Spark(v1.6.3)数据框,我将其转换为Pandas数据帧(Python v2.7.12)。有2个时间戳列,但其中一列转换为datetime64,而另一列转换为object。对于发生了什么有什么想法?

df.printSchema()

这导致以下结果。

root
 |-- id: string (nullable = true)
 |-- gps_id: integer (nullable = true)
 |-- start_date: timestamp (nullable = true)
 |-- end_date: timestamp (nullable = true)
df.take(1)

以下结果。

[Row(id=u'000000', gps_id=860, start_date=datetime.datetime(2017, 7, 29, 0, 0), end_date=datetime.datetime(2018, 9, 6, 0, 0))]
pdf = df.toPandas()
pdf.dtypes
id                          object
gps_id                       int32
start_date           datetime64[ns]
end_date                     object
dtype: object

有趣的是,如果我输入pdf.head(1),我会看到以下内容。请注意start_date没有附加HH:mm:ss

id     gps_id   start_date           end_date
000000 860      2017-09-29           2018-09-06 00:00:00

生成数据集的SQL非常简单,如下所示。

select
 id,
 gps_id,
 cast(start_date as timestamp) as start_date,
 cast(end_date as timestamp) as end_date
from gps_tbl

0 个答案:

没有答案