我有一个熊猫数据框,如下所示:
d = {'Date': [np.datetime64('2017-12-31','ns'), np.datetime64('2018-01-01','ns'), np.datetime64('2018-01-02','ns'), np.datetime64('2018-01-03','ns')],
'Prices': [10.55, 35.65, 12.34, 39.43]}
analytics = pd.DataFrame(data=d)
analytics['Date'] = pd.to_datetime(analytics['Date'], format='%Y-%m-%d')
第一列datetime64ns和另一列值,它可以追溯到多年,所以我没有写完整的内容。
我正在尝试制定一个公式来计算波动率,并在计算中考虑了营业日和节假日。我的代码是:
###days
ann = 260
Eyear = 2018
Emonth = 1
Eday = 3
#last day
last = dt.datetime(Eyear, Emonth, Eday)
#1y
dtvar1 = dt.datetime(Eyear-1, Emonth, Eday)
yr1 = dtvar1 - BDay(1) if (dtvar1.weekday() == 5 or dtvar1.weekday() == 6) else dtvar1
yr1_plus1 = yr1 + BDay(1)
yr1ct = len(analytics.set_index("Date")[yr1_plus1:last])
#overall
first = analytics.iloc[0]
first_plus1 = analytics.index[1]
ct = len(analytics)-1
def volatility_1_year(analytics=analytics):
dfret = analytics[first:last]/analytics[first:last].shift(1) - 1
#1y vola
v1y2 = dfret[yr1_plus1:last].std(axis=0, skipna=True, ddof=1) * np.sqrt(ann)
return v1y2
Vol1 = volatility_1_year()
print(Vol1)
问题出在我不断得到这个错误,我无法解决。
TypeError:无法对类进行切片索引 带有这些索引器的“ pandas.core.indexes.numeric.Int64Index” [日期
2007年1月2日00:00:00价格10.55名称:“ 0,dtype:对象”,类别为“ pandas.core.series.Series”
有人对此有任何暗示吗?我真的不明白我要去哪里。
非常感谢!