python pandas,外行逐行,(N,k)数据帧到(N,k,k)面板

时间:2016-07-07 15:24:40

标签: python pandas

说我有一些资产

rtns = pd.util.testing.makeTimeDataFrame(5000) # 5000 x 4
stds = pd.rolling_std(rtns, 20) # 5000 x 4
corMat = pd.ewmcorr(rtns, com = 50) # 5000 x 4 x 4

无论出于何种原因,我想分别计算std和相关性并重建协方差矩阵。我可以用循环

来做到这一点
out = corMat * 0
for (d,v) in stds.iterrows():
    out[d] = np.outer(v,v) * corMat[d]

主要的担心是np.outer丢失了列名,如果stds和corMat中的资产排序不同,则可能会导致不匹配。当然,循环很慢。

是否有一个pandas / numpy操作来替换这个循环(并自动处理资产名称匹配)?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容保留v的索引

out[d] = pd.DataFrame(np.outer(v, v), v.index, v.index) * corMat[d]