Python 将对象转换为日期范围

Python 将对象转换为日期范围,python,numpy,pandas,Python,Numpy,Pandas,我正在使用Pandas 0.8查询底层PostgreSQL数据库。Pandas正确地返回数据帧,但我的数据库中的底层时间戳列在Pandas中作为通用“对象”类型返回。因为我最终想对我的数据进行季节性标准化,我很好奇如何将这个通用的“对象”列转换为适合分析的内容 以下是检索数据的当前代码: # get timestamp with time zone Pandas example import pandas.io.sql as psql import psycopg2 # define quer

我正在使用Pandas 0.8查询底层PostgreSQL数据库。Pandas正确地返回数据帧,但我的数据库中的底层时间戳列在Pandas中作为通用“对象”类型返回。因为我最终想对我的数据进行季节性标准化,我很好奇如何将这个通用的“对象”列转换为适合分析的内容

以下是检索数据的当前代码:

# get timestamp with time zone Pandas example
import pandas.io.sql as psql
import psycopg2

# define query
QRY = """
    select 
        i i, 
        i * random() f,
        case when random() > 0.5 
        then 
            true 
        else 
            false 
        end b, 
        (current_date - (i*random())::int)::timestamp with time zone tsz 
    from 
        generate_series(1,1000) as s(i)
    order by
        4
    ;
"""
CONN_STRING = "host='localhost' port=5432 dbname='postgres' user='postgres'"

# connect to db
conn = psycopg2.connect(CONN_STRING)

# get some data set index on relid column
df = psql.frame_query(QRY, con=conn)

print "Row count retrieved: %i" % (len(df),)
在Python中生成以下结果:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000 entries, 0 to 999
Data columns:
i      1000  non-null values
f      1000  non-null values
b      1000  non-null values
tsz    1000  non-null values
dtypes: bool(1), float64(1), int64(1), object(1)

INT64索引:1000个条目,0到999
数据列:
i 1000个非空值
f 1000非空值
b 1000个非空值
tsz 1000非空值
数据类型:bool(1)、float64(1)、int64(1)、object(1)

有趣的是,第一列“i”是PG中的整数列。我不确定Pandas为什么认为这是一个“bool”类型的列。但我真正的问题是“object”列,我认为它应该是某种类型的时间戳。

列出的数据类型是按字母顺序排列的。
tsz
列可能包含
datetime.datetime
Python对象(通常由数据库驱动程序为时间戳列返回的对象),您看过了吗

我对你在这里做什么有点困惑。对于你的例子,QRY的真/假部分不是解释了i的布尔性质吗?也许我们需要看看数据库模式。