【问题标题】:why the offsets.QuarterBegin date is 12-01, 03-01, 06-01, 09-01?为什么 offsets.QuarterBegin 日期是 12-01、03-01、06-01、09-01?
【发布时间】:2021-02-17 21:14:29
【问题描述】:
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吗?

【问题讨论】:

    标签: python pandas date datetime offset


    【解决方案1】:

    docs 指定有一个startingMonth;例如“startingMonth = 3 对应于 2007 年 3 月 1 日、2007 年 6 月 1 日等日期”。要了解此关键字参数的默认值是什么,您可以查看 src 并观察 _default_starting_month = 3 (link)。

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

    如果您希望您的宿舍开始,例如on month = 1, 4, ... 和 end on month = 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
    

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 2020-02-16
      • 2018-07-09
      • 1970-01-01
      • 2018-12-06
      • 2015-12-31
      相关资源
      最近更新 更多