【问题标题】:How to add a month to a datetime object?如何将月份添加到日期时间对象?
【发布时间】:2021-07-20 09:01:06
【问题描述】:

我正在尝试使用与第一季度、第四季度、第七季度等一致的季度变量。使用营业季度并尝试为其增加一个工作月

start = datetime.date.today()
start=start+pd.tseries.offsets.DateOffset(months=1)
end = datetime.date(start.year+2, 12, 31)
business_days_rng =pd.date_range(start, end, freq='BQ')

但我收到一条消息:

不再支持带时间戳的整数和整数数组的加法/减法。不要加/减n,而是使用n * obj.freq

【问题讨论】:

  • 它适用于 pandas 1.2.3
  • 也许您应该使用pandas.Timestamp 而不是datetime - 类似于DateOffset 文档中的示例
  • 哪一行有问题?始终将有问题的完整错误消息(从“Traceback”一词开始)(不是评论)作为文本(不是屏幕截图,不是指向外部门户的链接)。还有其他有用的信息。

标签: python pandas time-series


【解决方案1】:

你可以使用时间增量

datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

但是对于更长的时间,相对增量会很方便

这使用了 python-dateutil 扩展

from datetime import date
from dateutil.relativedelta import relativedelta

six_months = date.today() + relativedelta(months=+6)

这种方法的优点是它可以处理 28、30、31 天等问题。这在处理业务规则和场景(例如发票生成等)时非常有用

$ date(2010,12,31)+relativedelta(months=+1)
  datetime.date(2011, 1, 31)

$ date(2010,12,31)+relativedelta(months=+2)
  datetime.date(2011, 2, 28)

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 2022-12-03
    • 2017-04-23
    • 2015-07-31
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多