【问题标题】:Keyerror when adding a column to a Dataframe (Pandas)将列添加到数据框(熊猫)时出现键错误
【发布时间】:2019-03-06 03:29:46
【问题描述】:

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

【问题讨论】:

  • 如果包含错误消息会更容易提供帮助,但看起来下面有答案。

标签: python-3.x pandas dataframe matplotlib


【解决方案1】:

请更新您的代码如下,然后它应该可以工作:

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

【讨论】:

  • 现在一切都说得通了,谢谢
猜你喜欢
  • 2020-02-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2018-10-14
  • 2022-09-27
  • 1970-01-01
  • 2023-02-09
相关资源
最近更新 更多