我是 python 的新手,一直在用这个简单的代码苦苦挣扎:
所以在最后一行,我得到了对象类型:pandas.core.series.Series 但是当我在二维数组中使用这种类型时会导致错误, 如何使用“股票代码”定义在我的结果中浮动?
我知道我可以简单地这样写,所以我的结果是浮动的:
Volatility = sec_returns['GME'].std() * 250 ** 0.5
所以括号中的“GME”而不是代码,但我想使用代码定义,所以我可以更改代码。谢谢 \
ticker = ['GME']
sec_data = pd.DataFrame()
for t in ticker:
sec_data[t] = wb.DataReader(t, data_source = 'yahoo', start ='2007-01-01')['Adj Close']
sec_returns = np.log(sec_data / sec_data.shift(1))
Volatility = sec_returns[ticker].std() * 250 ** 0.5
print(Volatility)
type(Volatility)
Output: pandas.core.series.Series
答案 0 :(得分:0)
您的示例在对 DataFrame 进行子集化时做了两件不同的事情。
Volatility = sec_returns['GME'].std() * 250 ** 0.5
不一样:
ticker = ['GME']
Volatility = sec_returns[ticker].std() * 250 ** 0.5
因为在第一个实例中,您通过将字符串传递给具有列名的 DataFrame 进行子集化,而在第二个实例中,您使用字符串列表进行子集化。所以第二个实例实际上是这样的:
Volatility = sec_returns[['GME']].std() * 250 ** 0.5
这将返回 pd.Series
而不是 float
。要从 pd.Series
获取值,您可以执行以下操作:
ticker = ['GME']
Volatility = sec_returns[ticker].std() * 250 ** 0.5
Volatility.values[0]
.values
将系列作为 numpy
数组返回,我们从中检索第一项。