2014-01-29 59 views
7

这里发生了什么? 我需要生成一个数据框与月初日期,,(1-1-2014至12-1-2014)fwiw我在其他地方使用fcast_year变量,在那里我需要月底,因此做日期数学熊猫生成月初范围

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 

给出这些月底价值....哎呀!

['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 PF熊猫

回答

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;熊猫的日期时间子类 – Jeff