繁体   English   中英

日期范围内的结束日期

[英]End Date in Date Range

这个问题已经被问过多次了。 但我的问题有点不同。 我想创建一个日期范围包括开始日期和结束日期的 pandas dataframe。 我正在使用的代码如下:

pd.date_range(start_date, end_date, freq=pd.tseries.offsets.Dateoffset(months=period))

这里的period是动态的。 因此,它可以是 1、3、4、6 或 12。我们还知道pd.date_range不包括结束日期。 我也不想 append 结束日期,因为我的月经频率会受到影响。 所以,如果我的日期范围是01-02-202001-12-2021 并且频率为 3 个月,那么该系列将在01-11-2021结束。 如果我在最后添加结束日期,那么最后日期和结束日期之间会有 1 个月的差异。

DatetimeIndex(['2020-02-01', '2020-05-01', '2020-08-01', '2020-11-01',
               '2021-02-01', '2021-05-01', '2021-08-01', '2021-11-01'],
              dtype='datetime64[ns]', freq='<DateOffset: months=3>')

我的问题是如何创建日期范围系列,使其包含极值并适应动态频率。

谢谢!

如果未提供结束日期,则表示最后提供的日期与结束日期之间的差值小于期间。 因此,只需将end_date添加到 date_range 返回的DatetimeIndex date_range的末尾即可。

start_date=pd.to_datetime("01-02-2020", dayfirst=True)
end_date=pd.to_datetime("01-12-2021", dayfirst=True)
period=3
x=pd.date_range(start_date, end_date, freq=pd.DateOffset(months=period))

if x[len(x)-1].date != end_date.date:
    x=np.append(x.date, end_date.date())

print(x)

[datetime.date(2020, 2, 1) datetime.date(2020, 5, 1)
 datetime.date(2020, 8, 1) datetime.date(2020, 11, 1)
 datetime.date(2021, 2, 1) datetime.date(2021, 5, 1)
 datetime.date(2021, 8, 1) datetime.date(2021, 11, 1)
 datetime.date(2021, 12, 1)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM