t = pd.Timestamp('2020-02-05')
print(pd.offsets.QuarterBegin().rollback(t))
print(pd.offsets.QuarterEnd().rollback(t))
外:
2019-12-01 00:00:00
2019-12-31 00:00:00
为什么结果是2019-12-01?不应该是2020-01-01吗?
文档指定有一个startingMonth
;例如">startingMonth = 3 对应于 3/01/2007、6/01/2007 这样的日期"。要找出此关键字参数的默认值是什么,您可以查看src并观察该_default_starting_month = 3
(链接)。
因此,在没有提供startingMonth
的情况下,您的季度从 month = 3、6、9、12 开始 - 这就是为什么如果您"回滚"pd.Timestamp('2020-02-05')
,您会2019-12-01 00:00:00
。
如果您希望您的季度开始,例如每月 = 1、4、...并在月结束 = 3, 6, ...(含),您可以将关键字设置为 1(对于季度末,分别设置为 3):
t = pd.Timestamp('2020-02-05')
print(pd.offsets.QuarterBegin(startingMonth=1).rollback(t))
print(pd.offsets.QuarterEnd(startingMonth=3).rollback(t))
2020-01-01 00:00:00
2019-12-31 00:00:00