我對 Python 很陌生。我正在嘗試創建一個日期串列和一個年份串列,我將把它傳遞給我的 python 回圈腳本。
日期將是給定時間段內每個月的第一天。棘手的部分是每年一月的年份將是去年。例如,對于“01Jan2022”,年份將為“2021”。
目前我在我的python代碼中列出了它們,如下所示:
Date = ['01Feb2022', ..., '01Dec2022']
Year = '2022'
然后在每年的一月手動更改并運行,例如在 2022 年:
Date = '01Jan2022'
Year = '2021'
我將傳遞給的 python 腳本:
Query = """select distinct A.name, count(A.number)
from A, B
where Date between A.Opendate and A.Enddate
and B.Status='Y'
Group by A.name"""
def summary(Date, Year, Query):
try:
cur = conn()
cur.execute(Query, {'Date': Date, 'Year':Year})
df = pd.DataFrame(cur.fetchall())
df.columns = [x[0] for x in cur.description]
Return df
df = summary(Dates[0], Query)
for i in range(1, len(Dates)):
df = pd.concat([df, plan(Dates[i], Query)], axis=0)
如何創建一個python腳本來自動生成它?這樣我就不需要列出所有日期,也不需要每年分別運行 Jan。
我試圖將日期定義如下:
start = '01Feb2022'
end = '01Jul2022'
Date = pd.date_range(start, end, freq='MS')
Date.strftime('%d%b%Y')
但是,如何將其與年份聯系起來?尤其是簡?有什么建議嗎?
感謝任何建議!
uj5u.com熱心網友回復:
我從這里獲取了一些想法以應用于您的用例。
import calendar
from datetime import *
from dateutil.relativedelta import relativedelta
def summary(date_dict):
print(date_dict)
def generate_months(start_day, end_day):
# convert start and end dates to datetime objects
date1 = datetime.strptime(start_day, "%d%b%Y")
date2 = datetime.strptime(end_day, "%d%b%Y")
# Loop through all months from start to end.
while date1 <= date2:
# use date1 year. Unless it's January, in which case subtract a year
Year = str(date1.year) if date1.month != 1 else str((date1 - relativedelta(years=1)).year)
date_dict = {'Date': date1.strftime("%d%b%Y"), 'Year':Year}
# send back a dictionary with current date and year combination
yield date_dict
# set date1 to the next month so we can continue the sequence
date1 = date1 relativedelta(months=1)
# Pass start and end dates into generator function
months = generate_months(start_day ='01Dec2021', end_day='01Dec2022')
for month in months:
summary(month)
結果:
{'Date': '01Dec2021', 'Year': '2021'}
{'Date': '01Jan2022', 'Year': '2021'}
{'Date': '01Feb2022', 'Year': '2022'}
{'Date': '01Mar2022', 'Year': '2022'}
{'Date': '01Apr2022', 'Year': '2022'}
{'Date': '01May2022', 'Year': '2022'}
{'Date': '01Jun2022', 'Year': '2022'}
{'Date': '01Jul2022', 'Year': '2022'}
{'Date': '01Aug2022', 'Year': '2022'}
{'Date': '01Sep2022', 'Year': '2022'}
{'Date': '01Oct2022', 'Year': '2022'}
{'Date': '01Nov2022', 'Year': '2022'}
{'Date': '01Dec2022', 'Year': '2022'}
如果您是 python 新手,也許您是生成器的新手。這里有更多關于 yield 陳述句的作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/514980.html
