SQL Server に、とりわけDateTime
columnFrom_UTC
とDateTime NULL
columnを含むテーブルがありますTo_UTC
。pandas に読み込もうとしますDataFrame
。
NULL 以外の列は として問題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 の組み合わせにより、パンダが正しい型に強制されるのを防いでいると思いますか?
試してみdf.convert_objects()
ましたが、役に立ちませんでした。
更新:
そうすればdf.To_UTC = pandas.Series(df.To_UTC, dtype='datetime64[ns]')
、必要な DataFrame を取得できます。しかし、null 可能な日時の結果でフレーム クエリを実行するすべての場所でこのハックを行う必要がないように、より一般的なソリューションが必要です。