Python 如何计算群组中的滚动相关系数?

Python 如何计算群组中的滚动相关系数?,python,pandas,Python,Pandas,给定一个数据帧,在groupby中,如何计算N个时段(5)特定列的滚动相关系数 我的尝试,我觉得我很接近,但错过了一些简单的 使用Corr df['cor'] = df.groupby('DIMENSION').val1.apply(lambda x: x.rolling(window=5).corr()) 使用另一个堆栈溢出建议 df['cor'] = df.groupby('DIMENSION').val1.apply(lambda x: x.rolling(window=5).corr(

给定一个数据帧,在groupby中,如何计算N个时段(5)特定列的滚动相关系数

我的尝试,我觉得我很接近,但错过了一些简单的

使用Corr

df['cor'] = df.groupby('DIMENSION').val1.apply(lambda x: x.rolling(window=5).corr())
使用另一个堆栈溢出建议

df['cor'] = df.groupby('DIMENSION').val1.apply(lambda x: x.rolling(window=5).corr()[df'val1']df['index'])
尝试使用默认值

df['cor'] = df.groupby('DIEMNSION').val1.apply(lambda x: x.rolling(window=5).corrwith())
数据帧:

Dimension,Val1,Index
A,15677,0
A,19191,1
A,19961,2
A,10004,3
A,17899,4
A,10933,5
A,12953,6
A,19431,7
A,17637,8
A,13310,9
A,10113,10
A,19108,11
A,17169,12
A,13859,13
A,11466,14
A,13673,15
A,15049,16
B,14996,17
B,17679,18
B,12944,19
C,19927,20
C,10659,21
C,14561,22
C,18842,23
C,13784,24
C,14562,25
C,10145,26
让我们试试这个:

def mytrans(x):
    return pd.DataFrame(x['Val1'].rolling(window=5).corr(x['Index']))

df['corr'] = df.groupby('Dimension')[['Val1','Index']].apply(mytrans)

df
让我们试试这个:

def mytrans(x):
    return pd.DataFrame(x['Val1'].rolling(window=5).corr(x['Index']))

df['corr'] = df.groupby('Dimension')[['Val1','Index']].apply(mytrans)

df

你和什么相关?指数,我只需要数据的R平方,在一组均匀间隔的时间内。这是线性回归的精确性,你和什么相关?指数,我只需要数据的R平方和均匀间隔的时间集。这是线性回归的精确性这是完美的!这太完美了!