Keyerror при добавлении столбца в Dataframe (Pandas) - PullRequest
0 голосов
/ 01 октября 2018

Pandas DataFrame на самом деле не принимает добавление второго столбца, и я не могу действительно устранить проблему.Я пытаюсь отобразить скользящие средние.Код отлично работает только для первого (MA_9) и выдает ошибку, как только я пытаюсь добавить дополнительный MA (MA_20).

Разве в этом случае невозможно добавить более одного столбца?

Код:

import numpy as np
import pandas as pd
import pandas_datareader as pdr
import matplotlib.pyplot as plt


symbol = 'GOOG.US'
start = '20140314'
end = '20180414'
google = pdr.DataReader(symbol, 'stooq', start, end)
print(google.head())

google_close = pd.DataFrame(google.Close)
print(google_close.last_valid_index)
google_close['MA_9'] = google_close.rolling(9).mean()
google_close['MA_20'] = google_close.rolling(20).mean()
# google_close['MA_60'] = google_close.rolling(60).mean()
# print(google_close)
plt.figure(figsize=(15, 10))
plt.grid(True)

# display MA's
plt.plot(google_close['Close'], label='Google_Cls')
plt.plot(google_close['MA_9'], label='MA 9 day')
plt.plot(google_close['MA_20'], label='MA 20 day')
# plt.plot(google_close['MA_60'], label='MA 60 day')
plt.legend(loc=2)
plt.show()

1 Ответ

0 голосов
/ 01 октября 2018

Пожалуйста, обновите ваш код, как показано ниже, и тогда он должен работать:

google_close['MA_9'] = google_close.Close.rolling(9).mean()
google_close['MA_20'] = google_close.Close.rolling(20).mean()

Изначально был только один столбец данных Close, поэтому ваш старый код google_close['MA_9'] = google_close.rolling(9).mean() работал, но после этой строки кода теперь он имеетдва столбца и поэтому он не знает, какие данные вы пытаетесь иметь в виду.Таким образом, обновляя данные столбца данных, которые вы хотели иметь в виду, это работает google_close['MA_20'] = google_close.Close.rolling(20).mean()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...