将Pandas日期时间索引延长1个句点

2024-10-01 15:45:41 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑DateTimeIndexdates

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

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


我希望如此

^{pr2}$

我试过了

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

然而

  • 不是泛化为使用dates的频率
  • 我收到了一个性能警告

    PerformanceWarning: Non-vectorized DateOffset being applied to Series or DatetimeIndex


Tags: 对象daterangebm频率pddatesns
2条回答

试试这个:

In [207]: dates = dates.append(pd.DatetimeIndex(pd.Series(dates[-1] + pd.offsets.BusinessMonthEnd())))

In [208]: dates
Out[208]: DatetimeIndex(['2016-01-29', '2016-02-29', '2016-03-31', '2016-04-29', '2016-05-31'], dtype='datetime64[ns]', freq=None)

或者使用list[...])代替pd.Series()

^{pr2}$

您的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将后者添加到索引中:

^{pr2}$

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

相关问题 更多 >

    热门问题