我正在使用Pandas计算数据框中列的标准偏差,然后将其乘以100得到一个百分比,然后最终按如下方式打印:
import pandas as pd
results = pd.read_csv("MRAret.csv")
vol = results["Return"].std
print "Volatility: ",round(vol*100,2),"%"
但是我收到以下错误:
File "C:/Users/Stuart/Documents/SPYDER/MRA Analysis.py", line 37, in <module>
print "Volatility: ",round(vol*100,2),"%"
TypeError: unsupported operand type(s) for *: 'instancemethod' and 'int'
很明显,“vol”变量类型是一个“instancemethod”,我以前从未遇到过(我是Pandas的新手)。
我尝试使用以下方法将类型更改为float:
vol = float(vol)
但是我收到以下错误:
TypeError: float() argument must be a string or a number
当我在我的iPython控制台中输入“vol”时,我得到输出:
In [95]: vol
-> vol()
Out[95]: 0.005856992616571794
但是当我输入时:
print vol
我明白了:
In [96]: print vol
<bound method Series.std of 0 0.000000
1 0.004864
2 0.001604
...
2369 0.004290
2370 0.014001
Name: Return, dtype: float64
我不明白它是如何同时成为一个值和一组值。
有人可以向我解释如何操作“instancemethod”类型的vol变量,以便进行算术运算。
非常感谢。
答案 0 :(得分:2)
你的错误来自这个错字:
vol = results["Return"].std
基本上vol
引用了您要执行此操作的std
方法:
vol = results["Return"].std()
是该方法的输出