首页 > 解决方案 > 来自 python 的 12 个月移动平均线

问题描述

df_close['MA'] = df_close.rolling(window=12).mean()

我不断收到此错误,有人可以帮忙吗

ValueError: Wrong number of items passed 20, placement implies 1

我的任务:

  1. 从雅虎财经中提取任意 20 只股票的 20 年月度股价和交易量数据。
  2. 计算每只股票的月收益和 12 个月移动平均线。

代码的其他部分:

start = dt.datetime(2000,1,1)
end = dt.datetime(2020,2,1)

df = web.DataReader(['AAPL', 'MSFT', 'ROKU', 'GS', 'GOOG', 'KO', 'ULTA', 'JNJ', 'ZM', 'AMZN', 'NFLX', 'TSLA', 'CMG', 'ATVI', 'LOW', 'BA', 'SYY', 'SNAP', 'BYND', 'OSTK'], 'yahoo',start,end)

df['Adj Close']
df['Volume']

data1 = df[['Adj Close', 'Volume']].copy()
data1['date1'] = data1.index
print(data1)

data2 = data1.merge(data1, left_on='date1', right_on='date1')
data2

df.sort_index()
df

df_monthly_returns = df['Adj Close'].ffill().pct_change()
df_monthly_returns.sort_index()
print(df_monthly_returns.tail())

df_close['MA'] = df_close.rolling(window=12).mean()
df_close ```

标签: pythonpandas

解决方案


ValueError:错误的项目数通过 20,位置意味着 1 意味着您试图在较小的空间中放置太多元素。

df_close['MA'] = df_close.rolling(window=12).mean()

您将 20 个“东西”推入一个只允许一个的容器中。

因此,如果您想将具有 20 个“列”的元素放入单个数据框列中,请尝试迭代df_close.rolling(window=12).mean()并存储在df_close['MA'].

请使用更多代码更新您的问题,以便我可以为您提供准确的解决方案。


推荐阅读