Grupo de correlación de pandas

Suponiendo que tengo un marco de datos similar al siguiente, ¿cómo podría obtener la correlación entre 2 columnas específicas y luego agruparlas por la columna 'ID'? Creo que el método 'corr' de Pandas encuentra la correlación entre todas las columnas. Si es posible, también me gustaría saber cómo puedo encontrar la correlación 'groupby' usando la función .agg (es decir, np.correlate).

Lo que tengo:

ID  Val1    Val2    OtherData   OtherData
A   5   4   x   x
A   4   5   x   x
A   6   6   x   x
B   4   1   x   x
B   8   2   x   x
B   7   9   x   x
C   4   8   x   x
C   5   5   x   x
C   2   1   x   x

Lo que necesito:

ID  Correlation_Val1_Val2
A   0.12
B   0.22
C   0.05

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta