得到KeyError:Adj。在python中关闭

时间:2018-10-18 12:20:30

标签: python-3.x pandas

我遇到错误KeyError:“调整”。关'。我不确定为什么,

import pandas as pd
import quandl
import math

df = quandl.get('WIKI/GOOGL')
df = df[['Adj. Open','Adj. High','Adj. Low', 'Adj. Close', 'Adj. Volume',]]
df['HL_PCT'] = (df['Adj. High'] - df['Adj. Close'])/ df['Adj. Close'] * 
100.0
df['PCT_change'] = (df['Adj. Close'] - df['Adj. Open'])/ df['Adj. Open'] * 
100.0

df = df[['Adj. Open','HL_PCT','PCT_change','Adj. Volume']]

forecast_col =  'Adj. Close'
df.fillna(-99999, inplace=True)

forecast_out = int(math.ceil(0.1*len(df)))

df['label'] = df['Adj. Close'].shift(-forecast_out)

print(df.head())

还有其他这样的错误

  

第19行中的文件“ C:\ Anaconda3 \ Lib \ idlelib \ google_stock.py”       df ['label'] = df ['Adj。关闭'] .shift(-forecast_out)

如果有任何相关性,我正在使用Python 3.6.4。

2 个答案:

答案 0 :(得分:0)

Keyerrors是指类似对象dict()的对象,在key中找不到dict。您在该程序中多次重新定义df,这将创建一个新的df对象。它不会改变旧的。所以当你说

df = df[['Adj. Open','HL_PCT','PCT_change','Adj. Volume']]

您要删除key的{​​{1}}值

然后您尝试引用它,稍后再说

Adj. Close

但是df['label'] = df['Adj. Close'].shift(-forecast_out) 不再存在。

答案 1 :(得分:0)

在代码的这一行:

df = df[['Adj. Open','HL_PCT','PCT_change','Adj. Volume']]

您正在将df设置为仅具有以上列。然后尝试访问df中不存在的密钥

df['label'] = df['Adj. Close'].shift(-forecast_out)

因此,错误。