2013-05-06 3 views
2

Я сделал DataFrame из sqlite3 базы данных сИзменить индекс на дату/время в пандах?

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

печати df.dtypes -> Givers меня:

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 

Значение идентификатора, что под названием 'точка привязки' в базе данных:

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) 

Как изменить идентификатор (индекс) от типа int64 до некоторого типа даты/времени?

Я не хочу этого делать, чтобы идентификатор был отсортирован.

Также, как удалить дату из индекса, потому что у меня есть только одна запись на рот, поэтому частота должна быть ежемесячной. например. 2012-12-01 - 2012-12 и так далее.

UPDATE:

При построении DataFrame из базы данных SQL никогда не использовать 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

я обнаружил, что с 'df.index = pd.to_datetime (df.index)' Я могу преобразовать в DatetimeIndex. Вопрос только в том, как установить частоту до 1 месяца? – WebOrCode

+0

Я также нашел еще один большой BUG в моем коде, это в SQL-запросе. Причина, почему моя строка не сортируется по дате, - это дуэт SQL-запроса, я использую 'SELECT * FROM hzmo_report;', но это не будет сортировать по строкам по дате, я должен был использовать 'SELECT * FROM hzmo_report ORDER BY datum;'. Теперь моя строка сортируется по дате. – WebOrCode

ответ

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

Смежные вопросы