extend a pandas datetimeindex by 1 period
pandas==1.1.1 Answer for +1
To follow up on this, for pandas==1.1.1
, I found this to be the best solution:
dates.union(pd.date_range(dates[-1] + dates.freq, periods=1, freq=dates.freq))
Generalised Answer Using n
n=3
dates.union(pd.date_range(dates[-1] + dates.freq, periods=n, freq=dates.freq))
Credits
Taken by combining @alberto-garcia-raboso's answer and @ballpointben's comment.
What Didn't Work
- The following just got formatted to an
Index
, not aDateTimeIndex
:dates.union([dates[-1] + dates.freq])
- Also
dates[-1] + 1
is deprecated.
The timestamps in your DatetimeIndex
already know that they are describing business month ends, so you can simply add 1:
import pandas as pd
dates = pd.date_range('2016-01-29', periods=4, freq='BM')
print(repr(dates[-1]))
# => Timestamp('2016-04-29 00:00:00', offset='BM')
print(repr(dates[-1] + 1))
# => Timestamp('2016-05-31 00:00:00', offset='BM')
You can add the latter to your index using .union
:
dates = dates.union([dates[-1] + 1])
print(dates)
# => DatetimeIndex(['2016-01-29', '2016-02-29', '2016-03-31', '2016-04-29',
# '2016-05-31'],
# dtype='datetime64[ns]', freq='BM')
Compared to .append
, this retains knowledge of the offset.