我想计算我的第一个std
DataFrame列的prices
。
这是我的代码:
import pandas as pd
def std(returns):
return pd.DataFrame(returns.std(axis=0, ddof=0))
prices = pd.DataFrame([[-0.33333333, -0.25343423, -0.1666666667],
[+0.23432323, +0.14285714, -0.0769230769],
[+0.42857143, +0.07692308, +0.1818181818]])
print(std(prices.ix[:,0]))
当我运行它时,我收到以下错误:
Traceback (most recent call last):
File "C:\Users\*****\Documents\******\******\****.py", line 12, in <module>
print(std(prices.ix[:,0]))
File "C:\Users\*****\Documents\******\******\****.py", line 10, in std
return pd.DataFrame(returns.std(axis=0, ddof=0))
File "C:\Python33\lib\site-packages\pandas\core\frame.py", line 453, in __init__
raise PandasError('DataFrame constructor not properly called!')
pandas.core.common.PandasError: DataFrame constructor not properly called!
我该如何解决?
谢谢!
答案 0 :(得分:4)
仔细查看代码中的内容:
>>> prices.ix[:,0]
0 -0.333333
1 0.234323
2 0.428571
>>> prices.ix[:,0].std(axis=0, ddof=0)
0.32325861621668445
所以你正在调用DataFrame构造函数:
pd.DataFrame(0.32325861621668445)
构造函数不知道如何处理单个float参数。它需要某种顺序或可迭代。也许你是这样的:
>>> pd.DataFrame([0.32325861621668445])
0
0 0.323259
答案 1 :(得分:0)
应该这么简单:
In [0]: prices[0].std()
Out[0]: 0.39590933234452624
DataFrames
的列为Series
。您可以直接在其上调用Series
方法。