2012-10-24 82 views
3

我是Python和Pandas的新手,並且在按日期序列編制索引時遇到了一些麻煩。我試圖從一個包含'mm/dd/yyyy'格式的日期和股票價格的SQLite數據庫中將數據拉入DataFrame。然後,我使用set_index創建一個新的DataFrame,以按日期對價格進行索引。如何使用數據集中的日期將新索引設置爲日期序列?這是否需要日期時間轉換或者DataFrame是否能夠將對象轉換爲日期序列?帶日期序列的DataFrame索引

下面是我使用的代碼:

import sqlite3 as db 
import pandas as p 

dbcon = db.connect(...ETF_DATA_TEST.db) 
c = dbcon.cursor() 
c.execute(""" QUERY """) 
rs =p.DataFrame.from_records(c.fetchall(),columns =['Date','Price']) 
data = rs.set_index('Date') 

感謝

+1

您使用的是什麼版本的熊貓?發佈版本0.8(http://pandas.pydata.org/pandas-docs/stable/whatsnew.html)將datetime的處理從對象類型更改爲numpy datetime64類型,因此它們具有從該版本開始的完整日期時間功能 –

+0

當前正在使用舊版本,0.7.3 – MattB

+0

現在全部設置,更新到最新的Pandas版本,並使用DatetimeIndex()進行設置。感謝您指引我朝着正確的方向 – MattB

回答

0

您可以使用datetime.datetime.strptime解析您的「日期」字符串,然後從日期時間構造numpy.datetime64值。日期時間類型:

data = rs.reindex(numpy.array([(lambda x : datetime.datetime.strptime(x,'%m/%d/%Y'))(x) for x in rs['Date']],dtype='datetime64[us]')