2013-05-06 93 views
2

我做了數據幀從sqlite3的數據庫更改索引到日期/時間類型的熊貓?

df = sql.read_frame("SELECT * FROM hzmo_report;", cnx, index_col='datum') 

打印df.dtypes - >給予議案我:

id     int64 
osiguranika   int64 
korisnika   int64 
omjer    float64 
mirovina   float64 
udio    float64 
neto_placa   int64 
neto_datum   object 
sredstva    int64 
dzd_korisnika  int64 
dzd_djece   int64 
dzd_sredstva_sr float64 
dzd_sredstva_bz float64 
dzd_isplata   int64 
url     object 

值ID,什麼被命名爲 '基準' 數據基地:

print df.index 
Index([2012-12-01, 2013-01-01, 2012-11-01, 2013-02-01, 2012-09-01, 2012-10-01, 2012-08-01, 2012-07-01, 2012-06-01, 2012-05-01, 2012-04-01, 2012-03-01, 2012-02-01, 2011-12-01, 2011-11-01, 2011-10-01, 2011-09-01, 2011-08-01, 2011-07-01, 2011-06-01, 2011-05-01, 2011-04-01, 2011-03-01, 2012-01-01, 2011-02-01, 2011-01-01, 2010-12-01, 2010-11-01, 2010-10-01, 2010-09-01, 2010-08-01, 2010-07-01, 2010-06-01, 2010-05-01, 2010-04-01, 2010-03-01, 2010-02-01, 2010-01-01, 2009-12-01, 2009-10-01, 2009-11-01, 2013-03-01], dtype=object) 

那麼如何將id(索引)從int64類型更改爲某種日期/時間類型?

我不會這樣做,這樣的id將被排序。

另外如何從索引中刪除日期,因爲我每口只有一個條目,所以頻率應該是每月。例如。 2012-12-01至2012-12等。

UPDATE:

當你從SQL數據庫構建數據幀無秩序從來沒有使用SQL查詢BY「你的日期欄」

這是很重要的,因爲否則的話,你的數據幀就不會被訂購你的日期欄。

所以我的SQL

df = sql.read_frame("SELECT * FROM hzmo_report;", cnx, index_col='datum') 

應該是:

df = sql.read_frame("SELECT * FROM hzmo_report ORDER BY datum;", cnx, index_col='datum') 
+1

我發現,隨着'df.index = pd.to_datetime(df.index)'我可以轉換爲DatetimeIndex。唯一的問題是如何將頻率設置爲1個月? – WebOrCode 2013-05-06 12:07:08

+0

我在代碼中還發現了一個更大的BUG,它在SQL查詢中。爲什麼我的行不按日期排序的原因是SQL查詢,我使用'SELECT * FROM hzmo_report;'但是這不會按日期排序我不得不使用'SELECT * FROM hzmo_report ORDER BY datum;'。現在我的行​​按日期排序。 – WebOrCode 2013-05-06 13:33:24

回答

2

嘗試使用pandas.PeriodIndex(df.index, freq='M')

+0

然後我有以下錯誤:'AttributeError:不能設置屬性'在'427 428 base,mult = _gfc(freq) - > 429 return tslib.dt64arr_to_periodarr(data.view('i8'),base, tz) 431#---期間指標草圖 – WebOrCode 2013-05-07 09:15:58

相關問題