2

我用 sqlite3 数据库制作了 DataFrame

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的值,在数据库中被命名为'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 时,切勿在没有 ORDER BY "your date column" 的情况下使用 SQL 查询

这很重要,因为否则,您的 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')
4

1 回答 1

3

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

于 2013-05-06T16:57:35.770 回答