Jupyter可正常运行的代码在Google Colab执行报KeyError如何解决
问题根因
- 你定义的
stocksv只有两个元素['AAPL', 'NDAQ'],Python列表索引从0开始计数,有效索引仅为0、1,你使用stocksv[2:3]做切片时,起始索引已经超出了列表的最大下标,会返回空列表 - 空列表经过
join拼接后得到的是空字符串,后续用空字符串去returnsall的列名中匹配取值,自然触发KeyError: ''报错
Jupyter环境运行正常的原因
你在Jupyter环境中给stocksv赋值时,列表内的元素数量应该大于等于3,索引2的位置有对应的有效股票代码,切片后可以拿到实际值,因此不会触发报错。迁移代码到Colab时,你大概率漏掉了stocksv的其他元素定义。
修复方案
根据你的需求调整切片逻辑即可:
- 取第一个股票用
stocksv[0:1],取第二个股票用stocksv[1:2] - 如果要统计所有股票的情况,可以直接遍历
stocksv列表,不需要做切片拼接
修复后的参考代码:
stocksv = ['AAPL', 'NDAQ'] returnsall=data1['Adj Close'].pct_change() returnsall = returnsall.dropna()*100 values= [2,5,10,15,20] print('This year: \n') # 遍历所有股票统计 for stock in stocksv: print(f'--- 股票${stock}统计 ---') for z in values: seriesObj = returnsall.apply(lambda x: True if x[stock] > z else False , axis=1) numOfRows = len(seriesObj[seriesObj == True].index) print(f'${stock} has been up more than {z}% on {numOfRows} days')
内容的提问来源于stack exchange,提问作者DSG
相关产品推荐
相关产品推荐

