无法将pandas“实例方法”相乘 - 如何更改为float

时间:2016-02-28 18:33:56

标签: python-2.7 pandas dataframe instance-methods

我正在使用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变量,以便进行算术运算。

非常感谢。

1 个答案:

答案 0 :(得分:2)

你的错误来自这个错字:

vol = results["Return"].std

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

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

是该方法的输出