From f500d5e5e0ff0786b6de814b5f5063a3d75cb54c Mon Sep 17 00:00:00 2001 From: Dieter Vandenbussche Date: Tue, 5 Mar 2013 20:56:48 -0500 Subject: [PATCH] BUG: handle single column frame in DataFrame.cov --- pandas/core/frame.py | 1 + pandas/tests/test_frame.py | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index c0449faf40368..b7675163a68e6 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -4559,6 +4559,7 @@ def cov(self, min_periods=None): baseCov.fill(np.nan) else: baseCov = np.cov(mat.T) + baseCov = baseCov.reshape((len(cols),len(cols))) else: baseCov = _algos.nancorr(com._ensure_float64(mat), cov=True, minp=min_periods) diff --git a/pandas/tests/test_frame.py b/pandas/tests/test_frame.py index 9329bb1da2b07..2d4c8d7409d4f 100644 --- a/pandas/tests/test_frame.py +++ b/pandas/tests/test_frame.py @@ -5049,6 +5049,18 @@ def test_cov(self): expected = self.mixed_frame.ix[:, ['A', 'B', 'C', 'D']].cov() assert_frame_equal(result, expected) + # Single column frame + df = DataFrame(np.linspace(0.0,1.0,10)) + result = df.cov() + expected = DataFrame(np.cov(df.values.T).reshape((1,1)), + index=df.columns,columns=df.columns) + assert_frame_equal(result, expected) + df.ix[0] = np.nan + result = df.cov() + expected = DataFrame(np.cov(df.values[1:].T).reshape((1,1)), + index=df.columns,columns=df.columns) + assert_frame_equal(result, expected) + def test_corrwith(self): a = self.tsframe noise = Series(randn(len(a)), index=a.index)