Python ValueError:使用pd df&;的序列设置数组元素;np.数组

Python ValueError:使用pd df&;的序列设置数组元素;np.数组,python,pandas,numpy,for-loop,valueerror,Python,Pandas,Numpy,For Loop,Valueerror,我得到ValueError:当I=0时,为行beta[I]=np.cov(rm[I],ra[I])设置一个数组元素,这意味着for循环开始运行并在那里停止,因此我得到rm和ra向量的第一个值,但不是beta的第一个值。 agg_-df是一种pd-df,有50行和1列,称为mean import pandas as pd import glob import numpy as np path ="C:\\Users\\sharon\\Desktop\\financial mathematics\\

我得到
ValueError:当
I=0
时,为行
beta[I]=np.cov(rm[I],ra[I])
设置一个数组元素,这意味着for循环开始运行并在那里停止,因此我得到
rm
ra
向量的第一个值,但不是
beta
的第一个值。
agg_-df
是一种pd-df,有50行和1列,称为
mean

import pandas as pd
import glob
import numpy as np
path ="C:\\Users\\sharon\\Desktop\\financial mathematics\\sadna"
all_files = glob.glob(path + "/*.csv")
df_list = [(pd.read_csv(f, encoding = "utf-8", header = None,usecols = [3], nrows = 470, ).assign(filename = f)) for f in all_files]
final_df = pd.concat(df_list)
final_df[3]= final_df[3].apply(pd.to_numeric, errors='coerce')
agg_df = final_df.groupby(['filename']).agg(['mean'])
agg_df.columns=['mean']
agg_df.index=range(50)
ra=np.ones(shape=(50))
beta=np.ones(shape=(50))
rm=np.ones(shape=(50))
for i in range(0,50):
    rm[i]=np.mean(agg_df['mean'])
    ra[i]=agg_df.loc[i,'mean']
    beta[i]=np.cov(rm[i],ra[i])

编辑:
agg_df
中的数据是50只股票每日价格变动前的平均值,每行一只股票。

当您尝试为
np.array
元素分配与该元素形状不兼容的内容时,会发生此错误。例如,将具有形状
(2,2)
的元素分配给具有形状
(1,)
的数组元素

现在让我们检查一下形状
beta[i]
是一个标量(shape
()
),而
np.cov()
返回一个协方差矩阵,其形状至少为
(1,1)
,它与
beta[i]
不兼容,因此会出现错误


您应该重新考虑数组的形状,以与预期的计算相匹配。

当您尝试为
np.array
元素分配与该元素形状不兼容的内容时,会发生此错误。例如,将具有形状
(2,2)
的元素分配给具有形状
(1,)
的数组元素

现在让我们检查一下形状
beta[i]
是一个标量(shape
()
),而
np.cov()
返回一个协方差矩阵,其形状至少为
(1,1)
,它与
beta[i]
不兼容,因此会出现错误

您应该重新考虑阵列的形状,以与预期的计算相匹配。

中:

beta[i]=np.cov(rm[i],ra[i])
beta
rm
ra
都是(50,)个数组。因此,
rm[i]
etc是一个标量,
beta[i]
只能容纳一个数字

如果我给标量一个
np.cov
,我会得到一个警告和(2,2)数组:

[104]中的
:np.cov(1.23,2.323)
/usr/local/bin/ipython3:1:运行时警告:自由度In:

beta
rm
ra
都是(50,)个数组。因此,
rm[i]
etc是一个标量,
beta[i]
只能容纳一个数字

如果我给标量一个
np.cov
,我会得到一个警告和(2,2)数组:

[104]中的
:np.cov(1.23,2.323)

/usr/local/bin/ipython3:1:RuntimeWarning:Degrees of freedom你能提供关于你的数据的更多细节吗,也许上传一个小例子,这样我们就可以真正复制你的条件了?您的预期输出是什么?尤其是所有变量的数据类型在这里都很重要(我的第一个假设:这有点问题)[可复制的示例)到目前为止,我建议这样做,因为这确实有助于其他人总结,是什么导致了您的麻烦。有关问题,请参阅我的版本。关于您评论中的链接-“未找到页面”所以我看不懂。现在我明白了,链接搞乱了。这里又是-->单击是,但我了解了agg_-df现在的样子,所以相关的只是agg_-df。你能提供更多关于你的数据的详细信息吗,也许上传一个小例子,这样我们就可以真正尝试复制你的条件了?你的预期输出是什么?尤其是数据类型所有变量的大小在这里都很重要(我的第一个假设:这有问题)。如果你到目前为止还没有阅读关于[可复制示例]的页面,我建议你这样做,因为这确实有助于其他人总结,是什么导致了你的麻烦。有关问题,请参阅我的版本。关于你评论中的链接-“找不到页面”因此我无法阅读。现在我看到,链接被弄乱了。这里再次出现-->单击是,但我了解了当前的agg_-df外观,因此相关的只是agg_-df。
In [104]: np.cov(1.23,2.323)                                                                                               
/usr/local/bin/ipython3:1: RuntimeWarning: Degrees of freedom <= 0 for slice
  #!/usr/bin/python3
/usr/local/lib/python3.6/dist-packages/numpy/lib/function_base.py:2455: RuntimeWarning: divide by zero encountered in true_divide
  c *= np.true_divide(1, fact)
/usr/local/lib/python3.6/dist-packages/numpy/lib/function_base.py:2455: RuntimeWarning: invalid value encountered in multiply
  c *= np.true_divide(1, fact)
Out[104]: 
array([[nan, nan],
       [nan, nan]])