我想找到一个给定月份的第一天,平均在随机日期之前 90 天。例如:
12 月 15 日 -- 返回 8 月 30 日 12 月 30 日 -- 返回 8 月 30 日12 月 1 日 -- 返回 8 月 30
日
我知道这可以用Pandas
pd 来完成。日期偏移量:
print(pd.Timestamp("2019-12-15") - pd.DateOffset(days=90))
但随后我会得到类似 9 月 15 日的东西。
我知道我可以计算负 90 天,选择月份,减去 1,然后选择获得的月份的最后一天,但我想知道这是否可以在一行代码中轻松有效地完成。
假设有问题的日期是:
dat = pd.Timestamp('2019-12-15')
要计算 90 天前的日期,请运行:
dat2 = dat - pd.DateOffset(days=90)
得到2019-09-16
.
最后,要了解本月的开始,请运行:
dat2 - pd.offsets.MonthBegin(0)
得到2019-09-01
.
简而言之,只需运行:
dat - pd.DateOffset(days=90) - pd.offsets.MonthBegin(0)
如果您从日期开始,则会出现细微的差异,这 90天回来只给出了一个月的第一天。例如
dat = pd.Timestamp('2019-11-30')
dat2 = dat - pd.DateOffset(days=90)
给2019-09-01
.
然后dat2 - pd.offsets.MonthBegin(0)
给出相同的日期。
如果在这种情况下想要上个月的开始日期,请运行:
dat2 - pd.offsets.MonthBegin(1)
(注意参数改为1(,得到2019-08-01
.
因此,请选择适合您需求的变体。