From 0f7d44119ea62b7c8d390f203111db54b1c3183f Mon Sep 17 00:00:00 2001 From: mcjcode Date: Mon, 22 Sep 2014 21:04:21 -0400 Subject: [PATCH 1/2] non-existent columns in dropna subset argument now raises KeyError --- pandas/core/frame.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index dd3d5c0e31196..e5d99049fcac4 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2551,7 +2551,11 @@ def dropna(self, axis=0, how='any', thresh=None, subset=None, agg_obj = self if subset is not None: ax = self._get_axis(agg_axis) - agg_obj = self.take(ax.get_indexer_for(subset),axis=agg_axis) + indices = ax.get_indexer_for(subset) + if -1 in indices : + bad_keys = [col for (col,idx) in zip(subset,indices) if idx==-1] + raise KeyError(bad_keys) + agg_obj = self.take(indices,axis=agg_axis) count = agg_obj.count(axis=agg_axis) From 56552cd33f80ce3fdc074e8c759f2e7e89f64bb6 Mon Sep 17 00:00:00 2001 From: mcjcode Date: Mon, 22 Sep 2014 22:17:36 -0400 Subject: [PATCH 2/2] added unit test checking that dropna raises KeyError on non-existent columns in subset arg --- pandas/tests/test_frame.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pandas/tests/test_frame.py b/pandas/tests/test_frame.py index b4b8e4263ec78..26d0b0cd940e8 100644 --- a/pandas/tests/test_frame.py +++ b/pandas/tests/test_frame.py @@ -7183,6 +7183,8 @@ def test_dropna_corner(self): # bad input self.assertRaises(ValueError, self.frame.dropna, how='foo') self.assertRaises(TypeError, self.frame.dropna, how=None) + # non-existent column - 8303 + self.assertRaises(KeyError, self.frame.dropna, subset=['A','X']) def test_dropna_multiple_axes(self): df = DataFrame([[1, np.nan, 2, 3],