Alpha_vantage调用报错:KeyError: 'close'问题求助
解决Alpha Vantage获取股票数据时的KeyError: 'close'问题
看起来你遇到的问题核心是Alpha Vantage返回的DataFrame列名和你预期的不匹配,在旧版本的Alpha Vantage库配合Pandas 0.23.0使用时,API返回的列名是带编号前缀的格式,而非你写的'close'。我给你几个具体的解决步骤:
步骤1:先确认返回数据的实际列名
在尝试提取'close'列之前,先打印出返回DataFrame的列名,明确正确的列标识:
from alpha_vantage.timeseries import TimeSeries import pandas as pd print('Pandas_Version: ' + pd.__version__) symbol = 'GOOGL' ts = TimeSeries(key='4BTFICZGTPWZRRQS', output_format='pandas') # 完整获取数据和元数据 data, meta_data = ts.get_daily(symbol=symbol, outputsize='full') # 打印列名 print("返回数据的列名:", data.columns)
运行这段代码后,你应该会看到类似这样的列名:['1. open', '2. high', '3. low', '4. close', '5. volume']——这就是问题所在,你要找的收盘价列是'4. close'而非'close'。
步骤2:使用正确的列名提取数据
知道正确列名后,修改你的代码即可:
close = data['4. close']
这样就能成功提取收盘价数据,后续的direction和target计算逻辑也能正常运行。
步骤3:(可选)重命名列方便后续操作
如果觉得带编号的列名不方便,可以一次性重命名所有列,让后续代码更简洁:
data.columns = ['open', 'high', 'low', 'close', 'volume'] # 之后就可以直接用'close'访问了 close = data['close']
额外提示
Pandas 0.23.0是比较旧的版本,后续如果遇到更多兼容性问题,你可以考虑升级到更稳定的1.x系列版本,但当前问题的核心是列名不匹配,按上面的步骤就能解决。
内容的提问来源于stack exchange,提问作者Rudi Ackermann
相关产品推荐
相关产品推荐

