Ошибка ключа’ в Python

#pandas #machine-learning

#pandas #машинное обучение

Вопрос:

 import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as dates
import numpy as np

dt = pd.read_csv("C:SubhroML_InternshipMARUTI_2.csv")
data = pd.DataFrame(dt)

data = data.drop('Date',axis=1)
data.drop(['Unnamed: 0'],axis=1,inplace=True)
print(data)

Roll_Mean_14 = data['Close Price'].rolling(window=14).mean()
Standard_Dev_14 = data['Close Price'].rolling(window=14).mean().std()
Upper_Band_14 = data['Close Price'].rolling(window=14).mean()   (2*Standard_Dev_14)                              
Low_Band_14 = data['Close Price'].rolling(window=14).mean() - (2*Standard_Dev_14)
avg_stock_price = data['Average Price']
stock_price = data['Close Price']

data['Roll_Avg'] = Roll_Mean_14
data['Upper_Band'] = Upper_Band_14
data['Lower_Band'] = Low_Band_14
data['Avg_Stock_Price'] = avg_stock_price

data=data.drop(data.head(14).index, inplace=False)
print(data)

for i in (data):
    if((data['Close Price'][i])<(data['Lower_Band'][i])):
        data['Call'][i]='Buy'
    elif((data['Close Price'][i])>(data['Lower Band'][i])) and ((data['Close Price'][i])<(data['Roll_Avg'])):
        data['Call'][i]='Hold Buy/Liquidate Short'
    elif((data['Close Price'][i])>(data['Roll_Avg'][i])) and ((data['Close Price'][i])<(data['Upper Band'])):
        data['Call'][i]='Hold Short/Liquidate Buy'   
    elif((data['Close Price'][i])>(data['Upper_Band'])):
        data['Call'][i]='Short'
print(data)
 

В этом коде я создал новый столбец: ‘Call’ для печати категорий ‘Buy’,’Short’,’Hold Buy / Ликвидировать Short’, ‘Hold Short / Ликвидировать Buy’ в соответствии с условиями, приведенными в коде. При запуске кода он показывает мне ошибку как

 KeyError : 'Symbol' in line 
if((data['Close Price'][i])<(data['Lower_Band'][i])):
 

Ответ №1:

Ваш способ доступа к индексам фрейма данных неверен.

Вы могли бы попробовать это :

 for i in data.index:
    if((data[i]['Close Price'])<(data[i]['Lower_Band'])):
 

Способ доступа к определенному значению (ячейке) в фрейме данных (таблице) :

данные[row_index][column_index]

Комментарии:

1. Хорошо .. я это сделал… Теперь он показывает мне ключевую ошибку: ‘Call’

2. после выполнения вышеупомянутого изменения я теперь нахожу ошибку KeyError : 14 в той же строке