延长一个pandas日期索引的1个周期[英] extend a pandas datetimeindex by 1 period

本文是小编为大家收集整理的关于延长一个pandas日期索引的1个周期的处理方法,想解了延长一个pandas日期索引的1个周期的问题怎么解决?延长一个pandas日期索引的1个周期问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

考虑 DateTimeIndex dates

dates = pd.date_range('2016-01-29', periods=4, freq='BM')
dates

DatetimeIndex(['2016-01-29', '2016-02-29', '2016-03-31', '2016-04-29'],
              dtype='datetime64[ns]', freq='BM')

我想以附加到对象的频率将索引延长一个周期.

<小时>

我期待

pd.date_range('2016-01-29', periods=5, freq='BM')

DatetimeIndex(['2016-01-29', '2016-02-29', '2016-03-31', '2016-04-29',
               '2016-05-31'],
              dtype='datetime64[ns]', freq='BM')
<小时>

我试过了

dates.append(dates[[-1]] + pd.offsets.BusinessMonthEnd())

然而

  • 未推广到 dates
  • 的使用频率
  • 我收到了性能警告<块引用>

    PerformanceWarning:将非矢量化 DateOffset 应用于 Series 或 DatetimeIndex

推荐答案

你的 DatetimeIndex 中的时间戳已经知道它们描述的是业务月末,所以你可以简单地添加 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')

您可以使用 .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')

与 .append 相比,它保留了偏移量的知识.

本文地址:https://www.itbaoku.cn/post/1727884.html