给出一个日期,得到当月的最后一个星期五是哪一天?
思路是给出一个日期得到这个月所有的日期,然后在得到每个日期是星期几,筛选出所有的星期五,找出最后一个即可。
import pandas as pd
index=pd.date_range(start=pd.Timestamp('2023-3-2').replace(day=1),end=pd.Timestamp('2023-3-2').replace(day=1)+pd.offsets.MonthEnd())
(
pd.DataFrame(index.weekday+1,index=index.date,columns=['weekday'])
.query('weekday==5')
.tail(1)
.index[0]
)
'''
datetime.date(2023, 3, 31)
'''
以上实现的过程可以封装在一个函数里,如下:
def find_in_week(d):
t=pd.Timestamp(d).replace(day=1)
index=pd.date_range(start=t,end=t+pd.offsets.MonthEnd())
return pd.DataFrame(index.weekday+1,index=index.date,columns=['weekday']).query('weekday==5').tail(1).index[0]
find_in_week('2023-3-2')
'''
datetime.date(2023, 3, 31)
'''
如果日期是今天,可以用pd.Timestamp('now')来实现。