簡體   English   中英

熊貓date_range為六個月的值

[英]Pandas date_range for six-monthly values

我正在嘗試創建一個日期范圍,該日期范圍從特定日期開始向后六個月遞增。 因此,如果end_date是2020/01/15,那么之前的日期將是2019/07/15,然后是2019/01/15,以此類推。

熊貓在date_range中接受“ 6M”作為freq參數,但這實際上表示月末,因此

test_range=pd.date_range(periods=10,end=dt.date(2020,1,15),freq='6M')

退貨

DatetimeIndex(['2015-06-30', '2015-12-31', '2016-06-30', '2016-12-31',
               '2017-06-30', '2017-12-31', '2018-06-30', '2018-12-31',
               '2019-06-30', '2019-12-31'],
              dtype='datetime64[ns]', freq='6M')

默認為年末/六月末,所以這不是我真正需要的。 date_range是否具有從給定日期起每月(或每六個月)遞增的功能? 如果沒有,我找不到它。

在此先感謝您的幫助!

嘗試使用SMS (半個月開始頻率(第一個和第15個))頻率

In [109]: test_range=pd.date_range(periods=10,end='2020-01-15',freq='6SMS')

In [110]: test_range
Out[110]:
DatetimeIndex(['2017-10-15', '2018-01-15', '2018-04-15', '2018-07-15', '2018-10-15', '2019-01-15', '2019-04-15', '2019-07-15',
               '2019-10-15', '2020-01-15'],
              dtype='datetime64[ns]', freq='6SMS-15')

您也可以使用自定義頻率:

In [130]: d = dt.date(2019,12,11)

In [131]: pd.date_range(periods=5,end=d,freq='6SMS-{}'.format(d.day))
Out[131]: DatetimeIndex(['2018-12-11', '2019-03-11', '2019-06-11', '2019-09-11', '2019-12-11'], dtype='datetime64[ns]', freq='6SMS-11')

另一個解決方案:

In [145]: pd.date_range(periods=5,end=d,freq='6MS') + pd.offsets.Day(d.day-1)
Out[145]: DatetimeIndex(['2017-12-11', '2018-06-11', '2018-12-11', '2019-06-11', '2019-12-11'], dtype='datetime64[ns]', freq=None)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM