从今天起使用 Python 迭代未来 12 个月

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

我正在尝试编写Python代码,该代码获取下个月的第一天并创建接下来12个月的数据帧。我已经尝试了两种方法都不起作用。

  1. 我创建了一个 FOR 循环,但我坚持它不将范围存储在列表中的事实。
  2. 我遇到了一个值错误:月份必须在 1..12 中,所以我也陷入困境。我可以寻求帮助吗?
# FIRST TRY
# import packages
# python
import pandas as pd
import numpy as np
import datetime as dt
from datetime import timedelta
from datetime import datetime 
from datetime import date
from dateutil.relativedelta import relativedelta

#get todays date
today = dt.date.today()

# Get the first day of next month
first_day_next_month = (today.replace(day=1) + dt.timedelta(days=32)).replace(day=1)

# Get the first day of the next 12 months
first_day_next_12_months = []
for i in range(1, 13):
    next_month = first_day_next_month + relativedelta(months=i)
first_day_next_12_months.append(next_month)

print(first_day_next_12_months)
#SECOND TRY
# import packages
# python
import pandas as pd
import numpy as np
import datetime as dt
from datetime import timedelta
from datetime import datetime 
from datetime import date
from dateutil.relativedelta import relativedelta

#get todays date
today = dt.date.today()

# Get the first day of next month
first_day_next_month = (today.replace(day=1) + dt.timedelta(days=32)).replace(day=1)
# Get the first day of next month
first_day_next_month = (today.replace(day=1) + dt.timedelta(days=32)).replace(day=1)
print("First day of next month:", first_day_next_month)
# Get the first day of the next 12 months
first_day_next_12_months = []
for i in range(1, 13):
   next_month = (first_day_next_month.replace(month=first_day_next_month.month + i-1) + datetime.timedelta(days=32)).replace(day=1)
   first_day_next_12_months.append(next_month)
print("First day of the next 12 months:")
for date in first_day_next_12_months:
   print(date)
python pandas date datetime ranged-loops
1个回答
0
投票

如果使用

pandas.DataFrame
,您通常不需要
for
循环。

就这么做:

import pandas as pd
import datetime as dt
from dateutil.relativedelta import relativedelta

today = dt.date.today()
first_day_next_month = (today.replace(day=1) + relativedelta(months=1))
first_day_next_12_months = [first_day_next_month + relativedelta(months=i) for i in range(12)]
df_months = pd.DataFrame(first_day_next_12_months, columns=['First Day of Month'])
© www.soinside.com 2019 - 2024. All rights reserved.