[英]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-2020
和01-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.