Python日期介于两个日期之间
我有一个如下所示的数据帧:Python日期介于两个日期之间,python,python-2.7,pandas,Python,Python 2.7,Pandas,我有一个如下所示的数据帧: raw_data = {'Series_Date':['2017-03-10','2017-03-13','2017-03-14','2017-03-15'],'SeriesDate':['2017-03-10','2017-03-13','2017-03-14','2017-03-15']} import pandas as pd df = pd.DataFrame(raw_data,columns=['Series_Date','SeriesDate']) pri
raw_data = {'Series_Date':['2017-03-10','2017-03-13','2017-03-14','2017-03-15'],'SeriesDate':['2017-03-10','2017-03-13','2017-03-14','2017-03-15']}
import pandas as pd
df = pd.DataFrame(raw_data,columns=['Series_Date','SeriesDate'])
print df
对于此DF,我想在末尾附加四列:
1) 开始日期=系列日期-10个工作日
2) 结束日期=系列日期-3个工作日
3) 日期差=(结束日期-开始日期)/2。但是,如果日期差为4.5天,则值应为5而不是4,即应四舍五入
4) 滚动日期=结束日期-“日期差异”营业日。i、 e.如果日期差为5,则滚动日期=结束日期-5个工作日
我可以将前两列附加如下:
from pandas.tseries.offsets import BDay
df['Start_Date'] = df['SeriesDate'] - BDay(10)
df['End_Date'] = df['SeriesDate'] - BDay(3)
然而,我在最后两篇专栏文章中苦苦挣扎。有人能提供一些帮助吗?一旦你有了这个
df
:
Series_Date Start_Date End_Date
0 2017-03-10 2017-02-24 2017-03-07
1 2017-03-13 2017-02-27 2017-03-08
2 2017-03-14 2017-02-28 2017-03-09
3 2017-03-15 2017-03-01 2017-03-10
您可以填写以下两列:
df['Date_Difference'] = ((df.End_Date - df.Start_Date) / 2).dt.ceil('D')
df['Roll_Date'] = df.End_Date - pd.Series(BDay(dd.days) for dd in df.Date_Difference)
说明:
(df.End\u Date-df.Start\u Date)/2)
给出一系列时间增量.dt.ceil('D')
将这一系列内容总结到今天
pd.Series(df.Date\u差异中dd的BDay(dd.days)
根据Date\u差异中的天数创建一系列工作日。(很可能有更好的方法,但我是一个熊猫新手)
附带问题:为什么有两列内容相同的Series\u Date
和SeriesDate
谢谢,不过呢?我需要导入的是外部库吗?..dt是任何包含类似datetimes的对象的系列中可用的属性,它包含与datetime相关的方法,例如本例中的ceil()
。当尝试使用b日期进行减法时,请参见“谢谢”,即df['Start_Date']=df['SeriesDate']-b日期(10)。我得到一个类型错误:ufunc subtract不能使用类型为dtype('的操作数