首页 > 解决方案 > 为什么 offsets.QuarterBegin 日期是 12-01、03-01、06-01、09-01?

问题描述

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 吗?

标签: pythonpandasdatedatetimeoffset

解决方案


文档指定有一个startingMonth; 例如,“ startingMonth = 3 对应于 2007 年 3 月 1 日、2007 年 6 月 1 日等日期”。要找出这个关键字参数的默认值是什么,您可以查看src并观察它_default_starting_month = 3链接)。

因此,如果不提供startingMonth,您的季度开始于月份 = 3、6、9、12 - 这就是2019-12-01 00:00:00如果您“回滚” ,您会得到的原因pd.Timestamp('2020-02-05')

如果您希望您的季度开始于月份 = 1, 4, ... 并且结束于月份 = 3, 6, ...(含),您可以将关键字设置为 1(对于 QuarterEnd 分别设置为 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

推荐阅读