pandas 获取季度,月度,年度首尾日期的方法

陆遥
陆遥
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍利用 pandas 库实现类似 SQL 中 dateadd 和 datesub 功能的日期处理方法。通过 DateOffset 对象,可分别计算当月、当季及当年的第一天与最后一天,并演示如何获取昨日日期、星期几以及生成自定义频率的时间序列。

该方法能够实现类似于 SQL 中 dateadd 和 datesub 函数的日期加减功能。

这里介绍两种获取特定日期的方式。

z=datetime.datetime(2016,12,5)
z=datetime.datetime.strptime('20150112','%Y%m%d')

for x in ['01','02','03','04','05','06','07','08','09','10','11','12']:
 d='2015'+x+'12'
 z=datetime.datetime.strptime(d,'%Y%m%d')#当天
 z1=z+pd.tseries.offsets.DateOffset(days=1-z.day)#当月第一天
 z2=z+pd.tseries.offsets.DateOffset(months=1,days=-z.day)#当月最后一天
 x1 = z + pd.tseries.offsets.DateOffset(months=-((z.month - 1) % 3), days=1 - z.day) # 当季第一天
 x2 = z + pd.tseries.offsets.DateOffset(months=3 - ((z.month - 1) % 3), days=-z.day) # 当季最后一天
 y1 = z + pd.tseries.offsets.DateOffset(months=1 - z.month, days=1 - z.day) # 当年第一天
 y2 = z + pd.tseries.offsets.DateOffset(years=1,months=1 - z.month, days= - z.day) # 当年最后一天
 
print(d,':','月:',z1,z2,'季:',x1,x2)
print(y1.strftime("%Y-%m-%d"),y2.strftime("%Y-%m-%d"))

计算当月最后一天的逻辑为:当月第一天加上 1 个月再减去 1 天。

计算当季最后一天的逻辑为:当季第一天加上 3 个月再减去 1 天。

计算当年最后一天的逻辑为:当年第一天加上 1 年再减去 1 天。

获取今天前一天的代码如下:

datetime.datetime.now()+pd.tseries.offsets.DateOffset(days=-1)

获取今天是星期几的代码如下:

datetime.datetime.now().weekday()

生成指定频率的时间序列代码如下:

start = datetime.datetime.strptime('2018-01-01', '%Y-%m-%d')
end = datetime.datetime.strptime('2018-01-08', '%Y-%m-%d')
for x in pd.date_range(start,end,freq="3D"): #50min等
 print(x.strftime('%Y%m%d'))

以上关于 pandas 获取季度、月度及年度首尾日期的方法就是本文分享的全部内容,希望能对大家有所帮助,也欢迎继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表