我在python中有一个数据框,其中的一列包含以下字母DWMY,分别代表日,周,月,年。我想按给定的顺序基于此列对数据框进行排序。但是,我唯一能找到的选择是根据字母顺序排序,这不是我所需要的。如果可以的话,请您告诉我。
下面的数据框是我要排序的示例。我需要先根据id对其进行排序,然后再根据单位将其排序为D,W,M,Y,然后再按时间排序。我尝试使用常规排序功能,但由于它正在根据字母顺序对单位进行排序,因此无法正常工作。
数据框
id time unit
1 3 M
2 5 Y
1 12 D
8 6 W
6 1 M
1 2 W
dataframe.sort_values(by=[id,unit,time])
Run Code Online (Sandbox Code Playgroud) 我想使用 scipy 优化布伦特根查找算法计算隐含波动率:
def calcimpliedvol(S,K,T,r,marketoptionPrice):
d1=(np.log(S/K)+(r-0.5*sigma**2)*T)/(sigma*np.sqrt(T))
d2=d1-(sigma*np.sqrt(T))
BSprice_call=S*si.norm.cdf(d1,0,1)-K*np.exp(-r*T)*si.norm.cdf(d2,0,1)
fx=BSprice_call-marketoptionPrice
return optimize.brentq(fx,0,1,maxiter=1000)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行该函数并为其指定所有输入时 K=6,S=8,T=0.25,r=0,OptionPrice=4 我收到一条错误消息,指出 sigma 未定义。西格玛是我想用优化算法找到的。
有人可以告诉我在定义函数时做错了什么吗?