在熊猫中生成每个月的最后一个星期五
python 437
原文标题 :Generate last friday of each month in pandas
我查看了某些 date_range 函数和 offset 函数,但无法真正找到一种快速方法来生成任何给定年份中任何/每个月的最后一个星期五日期。请问有简单的解决方案吗?我查看了堆栈溢出帖子好吧(使用 dateutil),但是那个看起来并不健壮/简单
你能帮忙吗
回复
我来回复-
jezrael 评论
采用:
#generate all Fridays between start end datetimes r = pd.date_range('2020-01-01','2022-01-01', freq='W-FRI') #filter last Friday per month periods r = r.to_series().groupby(r.to_period('m')).last()
print (r) 2020-01 2020-01-31 2020-02 2020-02-28 2020-03 2020-03-27 2020-04 2020-04-24 2020-05 2020-05-29 2020-06 2020-06-26 2020-07 2020-07-31 2020-08 2020-08-28 2020-09 2020-09-25 2020-10 2020-10-30 2020-11 2020-11-27 2020-12 2020-12-25 2021-01 2021-01-29 2021-02 2021-02-26 2021-03 2021-03-26 2021-04 2021-04-30 2021-05 2021-05-28 2021-06 2021-06-25 2021-07 2021-07-30 2021-08 2021-08-27 2021-09 2021-09-24 2021-10 2021-10-29 2021-11 2021-11-26 2021-12 2021-12-31 Freq: M, dtype: datetime64[ns]
或者如果没有星期五,则创建月份范围并减去星期:
a = pd.date_range('2020-01-01','2022-01-01', freq='M') r = a.where(a.weekday == 4, a - pd.offsets.Week(weekday=4)) print (r) DatetimeIndex(['2020-01-31', '2020-02-28', '2020-03-27', '2020-04-24', '2020-05-29', '2020-06-26', '2020-07-31', '2020-08-28', '2020-09-25', '2020-10-30', '2020-11-27', '2020-12-25', '2021-01-29', '2021-02-26', '2021-03-26', '2021-04-30', '2021-05-28', '2021-06-25', '2021-07-30', '2021-08-27', '2021-09-24', '2021-10-29', '2021-11-26', '2021-12-31'], dtype='datetime64[ns]', freq=None)
2年前