用熊猫 pd 查找随机日期前一个月的第一天.日期偏移量



我想找到一个给定月份的第一天,平均在随机日期之前 90 天。例如:

12 月 15 日 -- 返回 8 月 30 日 12 月 30 日 -- 返回 8 月 30 日12 月 1 日 -- 返回 8 月 30

我知道这可以用Pandaspd 来完成。日期偏移量:

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.

因此,请选择适合您需求的变体。

最新更新