日期列表不包括当月

Date List Not Counting Current Month

我正在尝试制作这样的日期列表:

date_list
Out[27]: 
['Sep 2014',
 'Oct 2014',
 'Nov 2014',
 'Dec 2014',
 'Jan 2015',
 'Feb 2015',
 'Mar 2015',
 'Apr 2015',
 'May 2015',
 'Jun 2015',
 'Jul 2015',
 'Aug 2015']

但出于某种原因,我的代码将在 8 月停止运行。我从去年到现在拿了一大块代码。

我做了一个 if 语句,因为如果它是这个月的最后一天,它只需要最后一个月的 11 个而不是 12 个。

range_max = datetime.datetime.now() 
date = datetime.datetime.now()

if datetime.datetime.now().day == calendar.monthrange(date.year, date.month)[1]:
    range_min = range_max - pd.tseries.offsets.DateOffset(years=1)+ pd.tseries.offsets.DateOffset(days=1)
else:
    range_min = range_max - pd.tseries.offsets.DateOffset(years=1)+ pd.tseries.offsets.MonthEnd(1) + pd.tseries.offsets.DateOffset(days=1)

然后我从数据框中取出切片

df = df[(df['recvd_dttm'] >= range_min) & 
               (df['recvd_dttm'] <= range_max)]

然后我date_list。

date_list = pd.DataFrame(index=pd.date_range(start = range_min, end = range_max, freq='M'))
print date_list
date_list = date_list.index.to_series().apply(lambda x: datetime.datetime.strftime(x, '%b %Y')).tolist()

然而,这是打印

date_list
Out[27]: 
['Sep 2014',
 'Oct 2014',
 'Nov 2014',
 'Dec 2014',
 'Jan 2015',
 'Feb 2015',
 'Mar 2015',
 'Apr 2015',
 'May 2015',
 'Jun 2015',
 'Jul 2015']

有谁知道为什么它不调用 8 月数据?这只是前几天的工作,我不明白出了什么问题。八月的数据肯定在我为此代码提取的数据框中。

当今天不是该月的最后一天时,则range_min设置为一年前该月的最后一天。所以当我 运行 时它给出的日期是:

[2014-09-30 00:20:35.774489, 
 2014-10-31 00:20:35.774489, 
 2014-11-30 00:20:35.774489, 
 ..., 
 2015-07-31 00:20:35.774489]

我不是 pandas 的专家,但 python 运行 中的大多数范围比您预期的少一个,因为现在还不是八月的最后一天而且你每次都增加一个月,那么我认为你需要在这里增加一个月:

date_list = pd.DataFrame(index=pd.date_range(start = range_min, end = range_max + pd.tseries.offsets.DateOffset(months = 1), freq='M'))

那么你的日期是 运行 八月底,如果那是你想要的?