gpt4 book ai didi

python - Pandas date_range 为六个月值

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:43 25 4
gpt4 key购买 nike

我正在尝试创建一个日期范围,该范围从特定日期开始以六个月为增量。因此,如果 end_date 是 2020/01/15,那么在此之前的日期将是 2019/07/15,然后是 2019/01/15,依此类推。

pandas 接受“6M”作为 date_range 中的 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 (semi-month start frequency (1st and 15th)) frequency :

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)

关于python - Pandas date_range 为六个月值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48454189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com