pandas.core.series.Series 浮动

时间:2021-06-29 05:16:12

标签: python python-3.x

我是 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

1 个答案:

答案 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 数组返回,我们从中检索第一项。