向数据框(Pandas)添加列时出现KeyError错误

4

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()

如果包含错误信息会更容易帮助解决问题,但看起来下面已经有答案了。 - mgrollins
1个回答

3
请按照下面的代码更新你的代码,这样就可以正常工作了:
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()


现在一切都清晰了,谢谢。 - Max K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接