0

我在 SQL Server 中有一个表,其中包含一个DateTimecolumnFrom_UTC和一个DateTime NULLcolumn To_UTC。我试着把它读成 pandas DataFrame

非 NULL 列作为 a 很好datetime64,但另一个得到 datatype Object

import pandas.io.sql as psql
import adodbapi
conn = adodbapi.connect(...)
df = psql.read_frame("SELECT Unit, To_UTC, From_UTC, CategoryID FROM T_Alarm WHERE ...", con=conn)
df.dtypes

Unit                  object
To_UTC                object
From_UTC      datetime64[ns]
CategoryID             int64
dtype: object

df.To_UTC[0]
==> pywintypes.datetime(2011, 9, 6, 13, 51, 56)

如果我WHERE To_UTC IS NOT NULL在查询中包含 a ,一切正常。

我猜想 adodbapi、pywintypes.datetime 对象和结果中的 NULL 的组合会阻止 pandas 强制转换为正确的类型?

我试过df.convert_objects()了,但没有帮助。

更新

如果我这样做df.To_UTC = pandas.Series(df.To_UTC, dtype='datetime64[ns]') 了,我就会得到我想要的 DataFrame。但我仍然想要一个更通用的解决方案,这样我就不必在任何地方都使用可空的日期时间结果进行框架查询。

4

0 回答 0