无法乘以 pandas "instance method" - 如何更改为 float

Can not multiply a pandas "instance method" - how to change to float

我正在使用 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 的新手)。

我尝试使用以下方法将类型更改为浮动:

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 变量,以便进行算术计算。

非常感谢。

您的错误来自这个错字:

vol = results["Return"].std

本质上 vol 引用了您想执行此操作的 std 方法:

vol = results["Return"].std()

这是该方法的输出