我在 SQL Server 中有一个表,其中包含一个DateTime
columnFrom_UTC
和一个DateTime NULL
column 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。但我仍然想要一个更通用的解决方案,这样我就不必在任何地方都使用可空的日期时间结果进行框架查询。