在pandas中将索引更改为日期/时间类型?

时间:2013-05-06 10:43:18

标签: python pandas

我使用

从sqlite3数据库创建了DataFrame
df = sql.read_frame("SELECT * FROM hzmo_report;", cnx, index_col='datum')

print 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的值,数据库中名为'datum'的是:

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(index)从int64类型更改为某个日期/时间类型?

我不会这样做,以便对id进行排序。

另外如何从索引中删除日期,因为我每个口只有一个条目,所以频率应该是每月。例如。 2012-12-01至2012-12等。

更新

当您从SQL数据库构造DataFrame时,永远不要使用SQL查询而不使用ORDER BY“您的日期列”

这很重要,因为否则,您的日期列不会对您的DataFrame进行排序。

所以我的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 个答案:

答案 0 :(得分:3)

尝试使用pandas.PeriodIndex(df.index, freq='M')