在python中查找从当前日期开始的前12个月的开始日期



代码

today = pd.to_datetime('today').strftime("%d/%m/%Y")
last = (pd.to_datetime(today) - pd.DateOffset(years=1)).strftime("%d/%m/%Y")
listofmonths = pd.date_range(start=last, end=today, freq='MS') 
listofmonths

输出:

DatetimeIndex(['2021-06-01', '2021-07-01', '2021-08-01', '2021-09-01',
'2021-10-01', '2021-11-01', '2021-12-01', '2022-01-01'],
dtype='datetime64[ns]', freq='MS')

注意:参考我只得到8个月的输出,并且我想要从当前日期开始的过去12个月的第一个日期

预期输出:

**DatetimeIndex(['2021-06-01', '2021-07-01', '2021-08-01', '2021-09-01',
'2021-10-01', '2021-11-01', '2021-12-01','2021-01-01', '2022-02-01',
'2022-03-01','2022-04-01', '2022-05-01', '2022-06-01',],
dtype='datetime64[ns]', freq='MS')**

尝试从"%更新strftimed/%m/%Y";至"%m/%d/%Y":

today = pd.to_datetime('today').strftime("%m/%d/%Y")
last = (pd.to_datetime(today) - pd.DateOffset(years=1)).strftime("%m/%d/%Y")
listofmonths = pd.date_range(start=last, end=today, freq='MS')

输出:

DatetimeIndex(['2021-06-01', '2021-07-01', '2021-08-01', '2021-09-01',
'2021-10-01', '2021-11-01', '2021-12-01', '2022-01-01',
'2022-02-01', '2022-03-01', '2022-04-01', '2022-05-01',
'2022-06-01'],
dtype='datetime64[ns]', freq='MS')

附言:问题是,"今天"被视为1月6日:

>>> last
'06/01/2021'
>>> today
'01/06/2022'

问题是%d/%m/%Y是第一天,但默认情况下Panda使用第一个月的

today = pd.to_datetime('today')
last = (pd.to_datetime(today) - pd.DateOffset(years=1))
listofmonths = pd.date_range(start=last, end=today, freq='MS').strftime("%d/%m/%Y")
Index(['01/06/2021', '01/07/2021', '01/08/2021', '01/09/2021', '01/10/2021',
'01/11/2021', '01/12/2021', '01/01/2022', '01/02/2022', '01/03/2022',
'01/04/2022', '01/05/2022', '01/06/2022'],
dtype='object')

对于pd.date_range,最好使用日期时间/时间戳对象,而不是字符串。

today_ts = pd.to_datetime('today').floor(freq='D')
last_ts = (pd.to_datetime(today_ts) - pd.DateOffset(years=1))
listofmonths = pd.date_range(start=last_ts, end=today_ts, freq='MS') 
listofmonths
DatetimeIndex(['2021-06-01', '2021-07-01', '2021-08-01', '2021-09-01',
'2021-10-01', '2021-11-01', '2021-12-01', '2022-01-01',
'2022-02-01', '2022-03-01', '2022-04-01', '2022-05-01',
'2022-06-01'],
dtype='datetime64[ns]', freq='MS')

如果你需要将它们用作字符串,你可以稍后将其转换为

对于任何与日期时间相关的内容,请尝试使用标准日期时间python库
您的错误可能是类型错误
这个代码对我来说很好。

from datetime import timedelta, datetime
today = datetime.now().strftime("%Y-%m-%d")
past = (datetime.now() - timedelta(days=365)).strftime("%Y-%m-%d")
pd.date_range(past, today, freq="MS")

输出:

DatetimeIndex(['2021-06-01', '2021-07-01', '2021-08-01', '2021-09-01',
'2021-10-01', '2021-11-01', '2021-12-01', '2022-01-01',
'2022-02-01', '2022-03-01', '2022-04-01', '2022-05-01',
'2022-06-01'],
dtype='datetime64[ns]', freq='MS')

相关内容

  • 没有找到相关文章

最新更新