使用Pandas pd.DateOffset查找随机日期之前的第一个月的第一天

问题描述 投票:-1回答:1

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

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

我知道可以使用Pandas pd.DateOffset:

print(pd.Timestamp("2019-12-15") - pd.DateOffset(days=90)) 

但随后我会得到类似9月15日的消息。

我知道我可以减去90天,选择月份,减去1,然后选择所获得月份的最后一天,但是我想知道是否可以轻松地在一行代码中高效地完成此操作。

python pandas
1个回答
0
投票

假设有问题的日期是:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.