pandas 获取季度,月度,年度首尾日期的方法
本文介绍利用 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 获取季度、月度及年度首尾日期的方法就是本文分享的全部内容,希望能对大家有所帮助,也欢迎继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









