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()
答案 0 :(得分: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()