Я использую Pandas для вычисления стандартного отклонения столбца в кадре данных, затем умножьте его на 100, чтобы получить процент, а затем, наконец, распечатайте его как следующим образом:Невозможно размножить «метод экземпляра» pandas - как изменить на float
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'
Так, очевидно, «т» тип переменной является «instancemethod», который я никогда не встречал раньше (я новичок Панды).
Я попытался изменить тип плавать с помощью:
vol = float(vol)
, но я получаю следующее сообщение об ошибке:
TypeError: float() argument must be a string or a number
Когда я просто наберите в «Vol» в моей консоли IPython я получаю выход:
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
Я не понимаю, как это может быть одно единственное значение и массив значений в то же время.
Не мог бы кто-нибудь объяснить мне, как я могу манипулировать переменной vol типа "instancemethod", чтобы выполнить арифметические вычисления.
Большое спасибо.
не должен это будет 'vol = results [" Return "]. std()'? – EdChum
Это действительно разобрало проблему сразу! Огромное спасибо. Я забыл(), поскольку я не использовал никаких аргументов. Я должен помнить, что в будущем буду меньше небрежным! – s666