python - 来自 python 的 12 个月移动平均线
问题描述
df_close['MA'] = df_close.rolling(window=12).mean()
我不断收到此错误,有人可以帮忙吗
ValueError: Wrong number of items passed 20, placement implies 1
我的任务:
- 从雅虎财经中提取任意 20 只股票的 20 年月度股价和交易量数据。
- 计算每只股票的月收益和 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 ```
解决方案
ValueError:错误的项目数通过 20,位置意味着 1 意味着您试图在较小的空间中放置太多元素。
df_close['MA'] = df_close.rolling(window=12).mean()
您将 20 个“东西”推入一个只允许一个的容器中。
因此,如果您想将具有 20 个“列”的元素放入单个数据框列中,请尝试迭代df_close.rolling(window=12).mean()
并存储在df_close['MA']
.
请使用更多代码更新您的问题,以便我可以为您提供准确的解决方案。
推荐阅读
- mysql - 通过删除不需要的 html 标签缩小文本字段后,数据库表 (MySQL) 仍然为 20GiB
- sql - 如何按字段过滤包含另一个字段
- android - 如何将文件映射上传到php服务器
- javascript - 如何分别从数组中获取项目
- wpf - 如何将 IAsyncQuickInfoSource 工具提示中的 WPF 文本框的文本复制到剪贴板
- android - Flutter 正在同时安装两个应用
- c# - 运行所有 Start 方法后创建事件链
- php - 将邮件发送给电子邮件地址来自 Mysql 的不同用户
- mysql - 无法在 Redhat Openshift 上部署 MySQL
- linux - Electron Linux:.AppImage 未显示图标,而 .deb 显示