1
我在使用Pandas 0.8查詢底層PostgreSQL數據庫。 Pandas正確返回DataFrame,但是我的數據庫中的底層時間戳列正在Pandas中作爲通用「對象」類型返回。正如我最終希望對數據進行季節性規範化一樣,我很好奇如何將此通用「對象」列轉換爲適合分析的內容。將對象轉換爲DateRange
這裏是我當前的代碼檢索數據:
# 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)
而有趣的是第一列,「我」,是PG的整數關口。我不確定Pandas爲什麼認爲這是一個「bool」類型的專欄。我真正的問題是「對象」列,我認爲我需要使用某種類型的時間戳。
我對你在這裏做什麼感到困惑。 QRY的真假部分是不是解釋了我爲你舉例的布爾本質?也許我們需要查看數據庫模式。 –