From 7ea34fad461fd2a192fbaaa8519f544fa15f2697 Mon Sep 17 00:00:00 2001 From: Juraj Niznan Date: Wed, 5 Jun 2013 14:55:01 +0200 Subject: [PATCH] DataFrame.corr() now computing correlations only once --- pandas/core/frame.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 9c0a2843370f4..1fd3e517e3089 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -4750,15 +4750,16 @@ def corr(self, method='pearson', min_periods=None): mask = np.isfinite(mat) for i, ac in enumerate(mat): for j, bc in enumerate(mat): - valid = mask[i] & mask[j] - if valid.sum() < min_periods: - c = NA - elif not valid.all(): - c = corrf(ac[valid], bc[valid]) - else: - c = corrf(ac, bc) - correl[i, j] = c - correl[j, i] = c + if i <= j: + valid = mask[i] & mask[j] + if valid.sum() < min_periods: + c = NA + elif not valid.all(): + c = corrf(ac[valid], bc[valid]) + else: + c = corrf(ac, bc) + correl[i, j] = c + correl[j, i] = c return self._constructor(correl, index=cols, columns=cols)