Python 计算熊猫中的滚动窗口成对关联

Python 计算熊猫中的滚动窗口成对关联,python,pandas,cross-correlation,Python,Pandas,Cross Correlation,我是python新手,正在尝试计算不同股票回报之间的滚动交叉相关性。我的数据框很大,它包含许多NAN。因此,rolling_corr()似乎工作得不太好 这是我的数据帧的一部分 我创建了一个函数,该函数生成相关矩阵,并按以下方式将其解压回数据帧: def corr_func(df,n=None): cmat = df.corr(method='pearson', min_periods=n) mask = np.ones(cmat.shape,dtype='bool')

我是python新手,正在尝试计算不同股票回报之间的滚动交叉相关性。我的数据框很大,它包含许多NAN。因此,rolling_corr()似乎工作得不太好

这是我的数据帧的一部分

我创建了一个函数,该函数生成相关矩阵,并按以下方式将其解压回数据帧:

def corr_func(df,n=None):
    cmat = df.corr(method='pearson', min_periods=n)
    mask = np.ones(cmat.shape,dtype='bool')
    mask[np.triu_indices(len(cmat))] = False
    dfnew = cmat[cmat.notnull()&mask]    
    dfnew = dfnew.stack()
    dfnew = dfnew.reset_index(level=1)
    dfnew.columns = ['PERMNO2','Value']
    dfnew.reset_index(inplace=True)
    dfnew=dfnew.rename(columns = {'PERMNO':'PERMNO1'})
    # Associate with the window (first date and last date)
    df.reset_index(inplace=True)
    df.sort_values('date',inplace=True)
    dfnew['date_first'] = df['date'].iloc[0]
    dfnew['date_last'] = df['date'].iloc[-1]
    return(dfnew)
结果数据框聚合了我的样本中股票收益的独特成对相关性。以下是结果数据帧的一个片段:

我试图用rolling_apply和这个函数(corr_func)实现滚动互相关,但没有成功。 是否有一种优雅的方法可以使用rolling\u apply或其他方法在数据框中聚合滚动交叉相关性?

显示了良好的解决方案。显示了良好的解决方案。