2016-01-21 171 views
12

我试图生成月度数据的日期范围,其中天总是在月初:熊猫DATE_RANGE在每月的月初生成月度数据

pd.date_range(start='1/1/1980', end='11/1/1991', freq='M') 

这产生1/31/19802/29/1980 , 等等。相反,我只是想1/1/19802/1/1980,...

我见过的其他问题请教一下生成的数据,始终是在每月的某一天,有答案说这是不可能的,但是月初的一定是可以的!

回答

27

您可以通过改变从'M'freq参数'MS'做到这一点:

d = pandas.date_range(start='1/1/1980', end='11/1/1990', freq='MS')  
print(d) 

这应该现在打印:

DatetimeIndex(['1980-01-01', '1980-02-01', '1980-03-01', '1980-04-01', 
       '1980-05-01', '1980-06-01', '1980-07-01', '1980-08-01', 
       '1980-09-01', '1980-10-01', 
       ... 
       '1990-02-01', '1990-03-01', '1990-04-01', '1990-05-01', 
       '1990-06-01', '1990-07-01', '1990-08-01', '1990-09-01', 
       '1990-10-01', '1990-11-01'], 
       dtype='datetime64[ns]', length=131, freq='MS', tz=None) 

查找到文件的offset aliases一部分。在那里它指出'M'是月底(月末频率),而'MS'为月初(月月开始频率)。