gpt4 book ai didi

python - Pandas 在特定日期创建日期范围

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

我想按月创建给定日期数的列表(或数组或其他)。

基本上我想要的就是这个

>>>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')

即它将月末设置为一天。这不是我想要的。

显然,这可以在周期数上迭代生成,但是当开始月份的日期接近该月的最后一天时,这会造成麻烦。

有没有人知道产生这个的函数或者上面概述的方法是唯一的方法?

最佳答案

我认为您想要的行为是,您想要一个日期范围,其中所有日期都与开始日期在一个月中的同一天,除了使用月份的最后一天,因为月份中的天数较少这个月。

您可以使用 pandas.DateOffset(months=1, day=day_of_month) 作为 freq 参数,其中 day_of_month 是您希望每个日期所在的月中的哪一天。对于最后一天小于 day_of_month 的月份,这将自动使用该月的最后一天。

In [68]: pandas.date_range('2005-05-14', periods=4, freq=pandas.DateOffset(months=1, day=14))
Out[68]: DatetimeIndex(['2005-05-14', '2005-06-14', '2005-07-14', '2005-08-14'], dtype='datetime64[ns]', freq='<DateOffset: day=14, months=1>')

In [69]: pandas.date_range('2007-12-31', periods=4, freq=pandas.DateOffset(months=1, day=31))
Out[69]: DatetimeIndex(['2007-12-31', '2008-01-31', '2008-02-29', '2008-03-31'], dtype='datetime64[ns]', freq='<DateOffset: day=31, months=1>')

关于python - Pandas 在特定日期创建日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48584465/

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