将对象转换为DateRange

时间:2012-07-05 03:10:24

标签: python numpy pandas

我使用Pandas 0.8查询基础PostgreSQL数据库。 Pandas正在正确返回DataFrame,但我的数据库中的底层时间戳列是作为通用对象"返回的。输入熊猫。因为我最终想对我的数据进行季节性标准化,我很好奇如何转换这个通用"对象"列到适合分析的内容。

这是我当前检索数据的代码:

# 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)

有趣的是,第一列&#34; i&#34;是PG中的整数列。我不确定为什么熊猫认为这是一个&#34; bool&#34;类型列。我真正的问题是&#34;对象&#34;列,我认为我需要某种类型的时间戳。

1 个答案:

答案 0 :(得分:0)

列出的dtypes按字母顺序排列。 tsz列可能包含datetime.datetime个Python对象(数据库驱动程序通常为时间戳列返回的内容),你看了吗?