date_time={'Date_Fields':[datetime.date(2014,5,1),datetime.date(2015,5,1),datetime.date(2016,5,1),datetime.date(2018,5,1)]}
date_time=pd.DataFrame(date_time)
date_time["Analysis Period"]=""
如果声明只是一个小故事,我需要创建一个名为“分析期”的Ameneded列,将36个月期间拆分为3个期间。例如(2014年5月 - 2015年4月),(2015年5月 - 2016年4月)和(2016年5月 - 2017年4月)。这是与我们的本地工具一起使用的。如果要将日期/时间拆分为期间
我能够用下面的代码完成这项壮举,但是我想知道是否有更有效的方法来做到这一点,而无需手动更新日期范围。 同样在下面的if语句中,最初我试图用两个对应的elif语句来做一个if语句。但是,这似乎没有锻炼。有人能解释为什么?
谢谢
if ((date_time["Date_Fields"]>= datetime.date(2014,5,1)) & (date_time["Date_Fields"]<=datetime.date(2015,4,30))) is not False:
date_time["Analysis Period"]=np.where(((date_time["Date_Fields"]>= datetime.date(2014,5,1)) & (date_time["Date_Fields"]<=datetime.date(2015,4,30))),'May 2014 to April 2015', date_time["Analysis Period"])
if ((date_time["Date_Fields"]>= datetime.date(2015,5,1)) & (date_time["Date_Fields"]<=datetime.date(2016,4,30))) is not False:
date_time["Analysis Period"]=np.where(((date_time["Date_Fields"]>= datetime.date(2015,5,1)) & (date_time["Date_Fields"]<=datetime.date(2016,4,30))),'May 2015 to April 2016', date_time["Analysis Period"])
if ((date_time["Date_Fields"]>= datetime.date(2016,5,1)) & (date_time["Date_Fields"]<=datetime.date(2017,4,30))) is not False:
date_time["Analysis Period"]=np.where(((date_time["Date_Fields"]>= datetime.date(2016,5,1)) & (date_time["Date_Fields"]<=datetime.date(2017,4,30))),'May 2016 to April 2017',date_time["Analysis Period"])
您需要'pd.cut()'。 – DyZ
谢谢,将其解读。 – Bjc51192