【发布时间】:2018-07-13 01:26:19
【问题描述】:
我想每月创建一个给定日期数量的列表(或数组或其他)。
基本上我想要的是这个
>>>some_function(start_date=date(2005, 5, 14), periods=4, freq='M')
['2005-05-14', '2005-06-14', '2005-07-14', '2005-08-14']
如果开始月份的日期接近月底,我想要这个
>>>some_function(start_date=date(2007, 12, 31), periods=4, freq='M')
['2007-12-31', '2008-01-31', '2008-02-29', '2008-03-31']
我知道 pandas date_range 函数,但是它会产生这个
pd.date_range(date(2005, 5, 14), periods=4, freq='M')
Out[1]: DatetimeIndex(['2005-05-31', '2005-06-30', '2005-07-31', '2005-08-31'],
dtype='datetime64[ns]', freq='M')
即它将月末设置为一天。这不是我想要的。
显然,这可能会在周期数上迭代生成,但是当 startmonth 的日期接近该月的最后一天时,这会产生麻烦。
有人知道产生这个的函数还是上面概述的方法是唯一的方法?
【问题讨论】:
-
那么,您希望得到什么:your_function(date(2004, 1, 31), period=4, freq='M')
-
嗨,我希望像 [date(2004, 1, 31), date(2004, 2, 29), date(2004, 3, 31), date(2004, 4, 30) )],如问题中所述
-
hmm,所以当您添加一个月时,这会将您带到下个月的同一天(或该月的最后一天)。对吗?
-
是的,如果可能的话。如果不可能,则需要在月底。