如何从指定Timestamp获取下月月末的Timestamp?
获取指定日期下月月末的方法
针对你给出的日期 Timestamp('2020-10-17 00:00:00'),可以通过Pandas的内置工具快速获取下月月末日期,以下是几种简单方案:
方案一:使用周期转换(最简洁)
利用Pandas的to_period将日期转换为月度周期,加1个月后再获取周期的结束时间,最后归一化到午夜:
import pandas as pd ts = pd.Timestamp('2020-10-17 00:00:00') next_month_end = (ts.to_period('M') + 1).end_time.normalize() print(next_month_end) # 输出:Timestamp('2020-11-30 00:00:00')
方案二:使用日期偏移量
先给原日期加1个月,再用MonthEnd偏移量调整到当月月末:
next_month_end = (ts + pd.DateOffset(months=1)) + pd.offsets.MonthEnd(0) print(next_month_end) # 输出:Timestamp('2020-11-30 00:00:00')
关于你使用rrule的问题
你之前的代码用rrule(MONTHLY)生成的是每月同一天的日期(比如9月17日、10月17日),所以无法直接得到月末日期。如果一定要用rrule,可以在生成日期后调整到当月月末:
import pandas as pd from datetime import date from dateutil.rrule import rrule, MONTHLY from dateutil.relativedelta import relativedelta start_date = date(2020, 9, 17) end_date = date(2020, 10, 31) for d in rrule(MONTHLY, dtstart=start_date, until=end_date): # 将日期调整为当月月末 end_of_month = d + relativedelta(day=31) t = pd.Timestamp(end_of_month) print(t) # 输出:2020-09-30 00:00:00、2020-10-31 00:00:00
不过相比之下,Pandas的内置方法更直接高效,更适合处理这类日期计算需求。
内容的提问来源于stack exchange,提问作者Masoud180190
相关产品推荐
相关产品推荐

