2014-01-29 4 views
7

Что здесь происходит? Мне нужно сгенерировать dataframe с датами начала месяца, (1-1-2014 To 12-1-2014) fwiw Я использую переменную fcast_year в другом месте, где мне нужен конец месяца, следовательно, дата математикиPandas generate date range of the Month Month

from pandas.tseries.offsets import * 
fcast_yr=pd.to_datetime('2014-12-31') 
x=(fcast_yr + pd.DateOffset(days= -30)) # to set x to 2014-12-01 
d=pd.date_range((x +pd.DateOffset(months=-10)), periods=12, freq='MS') #"MS" means start of month!! 
print d.values 

Дает значение в конце месяца .... yech !!

['2014-01-31T18:00:00.000000000-0600' '2014-02-28T18:00:00.000000000-0600' 
'2014-03-31T19:00:00.000000000-0500' '2014-04-30T19:00:00.000000000-0500' 
'2014-05-31T19:00:00.000000000-0500' '2014-06-30T19:00:00.000000000-0500' 
'2014-07-31T19:00:00.000000000-0500' '2014-08-31T19:00:00.000000000-0500' 
'2014-09-30T19:00:00.000000000-0500' '2014-10-31T19:00:00.000000000-0500' 
'2014-11-30T18:00:00.000000000-0600' '2014-12-31T18:00:00.000000000-0600'] 

Использование 13,0 пф панды

ответ

8

Вам не нужно принуждать метку времени в месяц начать; частота будет делать это (но ваш ответ правильный).

«Значения» - это только то, как numpy представляет даты (они являются UTC).

In [8]: pd.date_range((Timestamp('20141231') +pd.DateOffset(months=-11)), periods=12, freq='MS') 
Out[8]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2014-02-01, ..., 2015-01-01] 
Length: 12, Freq: MS, Timezone: None 
+0

mmm .. это работает .. Мне нужно использовать -12 в течение нескольких месяцев .. странно ... Я думаю, что я сражался с чем-то еще :-) спасибо! – dartdog

+0

Что такое метка времени? – robertevansanders

+0

http://pandas.pydata.org/pandas-docs/dev/timeseries.html#time-stamps-vs-time-spans; подкласс класса datetime в пандах – Jeff