Python-ValueError:无法强制为Series,长度必须为48:8

Python-ValueError:无法强制为Series,长度必须为48:8,python,pandas,Python,Pandas,尝试使用以下代码在图形上显示累积回报: 股票信息 累积收益图 return\u data=data.pct\u change()[1:] 加权返回=(权重*返回数据) 总回报=加权回报。总和(轴=1) 累计收益=(总收益+1).cumprod() 图=plt.图(图尺寸=(10,6)) ax1=图添加轴([0.1,0.1,0.8,0.8]) ax1.绘图(累计返回) ax1.set_xlabel('Date') ax1.set_ylabel(“返回”) ax1.设置标题(“投资组合累计回报”)

尝试使用以下代码在图形上显示累积回报:

股票信息 累积收益图
return\u data=data.pct\u change()[1:]
加权返回=(权重*返回数据)
总回报=加权回报。总和(轴=1)
累计收益=(总收益+1).cumprod()
图=plt.图(图尺寸=(10,6))
ax1=图添加轴([0.1,0.1,0.8,0.8])
ax1.绘图(累计返回)
ax1.set_xlabel('Date')
ax1.set_ylabel(“返回”)
ax1.设置标题(“投资组合累计回报”)
plt.show();
但是我得到了这个错误:ValueError:无法强制到Series,长度必须是48:8

有什么帮助吗

编辑:


ValueError回溯(最近一次调用)
在里面
2.
3 return\u data=data.pct\u change()[1:]
---->4加权返回=(权重*返回数据)
5.
6总收益=加权收益。总和(轴=1)
~\Anaconda3\lib\site packages\pandas\core\ops\\uuuuu init\uuuuuuuuu.py(自身、其他、轴、级别、填充值)
1486 def f(自身、其他、轴=默认轴、标高=无、填充值=无):
1487
->1488其他=\u对齐\u方法\u框架(自身、其他、轴)
1489
1490如果存在(其他,ABCDATA帧):
~\Anaconda3\lib\site packages\pandas\core\ops\\uuuuuu init\uuuuuuuu.py在方法框架(左、右、轴)中
1456 elif类似于列表(右),而不是实例(右,(ABC系列,ABCDATA框架)):
1457#GH17901
->1458右=至_系列(右)
1459
1460返回权
~\Anaconda3\lib\site packages\pandas\core\ops\\uuuuuu init\uuuuuuuu.py in to_系列(右)
1417如果len(左列)!=莱恩(右):
1418升值错误(
->1419 msg.格式(请求长度=长度(左.列),给定长度=长度(右))
1420                 )
1421 right=left.\u构造函数\u切片(right,index=left.columns)
ValueError:无法强制转换为序列,长度必须为48:8

你能分享整个堆栈跟踪吗?@adrianp对不起,我是python新手;堆栈跟踪是什么意思?代码的其余部分?在
ValueError
行的顶部,您应该可以看到发生错误的行。这称为回溯或堆栈跟踪,取决于您使用的语言。这将有助于我们了解问题发生的地方。还添加了与权重项相关的行,例如
return\u data
有48个值,而
weights
只有8个值。您是否为
return\u data
获取了正确的值?能否共享整个堆栈跟踪?@adrianp抱歉,我是python新手;堆栈跟踪是什么意思?代码的其余部分?在
ValueError
行的顶部,您应该可以看到发生错误的行。这称为回溯或堆栈跟踪,取决于您使用的语言。这将有助于我们了解问题发生的地方。还添加了与权重项相关的行,例如
return\u data
有48个值,而
weights
只有8个值。您是否获得了正确的
返回数据值
stocks = ['TD', 'RTN', 'DIS', 'NKE', 'TSLA', 'BYND', 'AMZN', 'MFC']

weights = [0.1409, 0.1572, 0.1124, 0.1449, 0.1619, 0.1022, 0.0296, 0.1509]

start = pd.to_datetime('2018-08-20')
end = dt.datetime.today()

data = pdr.get_data_yahoo(stocks, start, end)
print(data)
ValueError                                Traceback (most recent call last)
<ipython-input-12-2c8173a96906> in <module>
      2 
      3 return_data = data.pct_change()[1:]
----> 4 weighted_returns = (weights * return_data)
      5 
      6 total_return = weighted_returns.sum(axis=1)

~\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in f(self, other, axis, level, fill_value)
   1486     def f(self, other, axis=default_axis, level=None, fill_value=None):
   1487 
-> 1488         other = _align_method_FRAME(self, other, axis)
   1489 
   1490         if isinstance(other, ABCDataFrame):

~\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in _align_method_FRAME(left, right, axis)
   1456     elif is_list_like(right) and not isinstance(right, (ABCSeries, ABCDataFrame)):
   1457         # GH17901
-> 1458         right = to_series(right)
   1459 
   1460     return right

~\Anaconda3\lib\site-packages\pandas\core\ops\__init__.py in to_series(right)
   1417             if len(left.columns) != len(right):
   1418                 raise ValueError(
-> 1419                     msg.format(req_len=len(left.columns), given_len=len(right))
   1420                 )
   1421             right = left._constructor_sliced(right, index=left.columns)

ValueError: Unable to coerce to Series, length must be 48: given 8