我有一个数据框df:
ID Var1 Var2 1 1.2 4 1 2.1 6 1 3.0 7 2 1.3 8 2 2.1 9 2 3.2 13
我想找到的Pearson相关系数的值Var1,并Var2为每ID
Var1
Var2
ID
因此结果应如下所示:
ID Corr_Coef 1 0.98198 2 0.97073
更新:
必须确保变量的所有列均为int或float
int
float
df.groupby('ID').corr()
输出:
Var1 Var2 ID 1 Var1 1.000000 0.981981 Var2 0.981981 1.000000 2 Var1 1.000000 0.970725 Var2 0.970725 1.000000
具有OP输出格式。
df_out = df.groupby('ID').corr() (df_out[~df_out['Var1'].eq(1)] .reset_index(1, drop=True)['Var1'] .rename('Corr_Coef') .reset_index())
ID Corr_Coef 0 1 0.981981 1 2 0.970725