[英]How to get date of last friday in each quarter?
我想找到給定年份每個季度的最后一個星期五日期。 例如output如下
last friday in March
last friday in June
last friday in september
last friday in december
我怎樣才能根據給定的年份智能地找到這個作為輸入
我假設您不希望 output 字面意思
last friday in March
last friday in June
last friday in september
last friday in december
而且您只是不想查找示例年份的這些日期以包含在您的問題中。
由於我們知道季度總是在這些月份結束,因此我們可以創建這些月份的最后日期。 然后, datetime.date.weekday()
告訴我們它是星期幾。 星期五是4
,所以我們只需要找出我們需要多少天 go 才能實現這一點。 那么,使用datetime.timedelta
可以減去那么多天,我們應該對 go 好:
import datetime
def last_fridays_of_quarter(year):
last_days = [datetime.date(year, 3, 31), datetime.date(year, 6, 30), datetime.date(year, 9, 30), datetime.date(year, 12, 31)]
for day in last_days:
days_to_sub = (day.weekday() - 4) % 7
last_friday = day - datetime.timedelta(days=days_to_sub)
print(last_friday)
在 2022 年進行測試:
>>> last_fridays_of_quarter(2022)
2022-03-25
2022-06-24
2022-09-30
2022-12-30
這是解決它的一種方法。 您將給定年份中每個季度的最后幾天存儲在一個數組中。 然后您遍歷所述季度結束日期,並計算您需要減去才能到達上一個星期五的偏移量。
from datetime import datetime, timedelta
year = 2022
quarter_ending_dates = [
datetime(year, 3, 31),
datetime(year, 6, 30),
datetime(year, 9, 30),
datetime(year, 12, 31)
]
for ending_date in quarter_ending_dates:
offset = (ending_date.weekday() - 4) % 7
last_friday = ending_date - timedelta(days=offset)
print(last_friday)
嘗試:
import pandas as pd
def fridays(year):
df = pd.date_range(start=str(year), end=str(year+1),
freq='W-FRI').strftime('%m/%d/%Y')\
.to_frame().reset_index(drop = True)
df.columns = ['date']
df.index = pd.to_datetime(df['date']).dt.to_period('Q')
df = df.groupby(df.index).last()
df.index.name = 'quarter'
return df
fridays(2022)
output 是:
四分之一 | 日期 |
---|---|
2022Q1 | 2022 年 3 月 25 日 |
2022Q2 | 2022 年 6 月 24 日 |
2022Q3 | 2022 年 9 月 30 日 |
2022Q4 | 2022 年 12 月 30 日 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.