1414from pandas .core .series import Series
1515from pandas .util .testing import (assert_panel_equal , assert_frame_equal ,
1616 assert_series_equal , assert_almost_equal ,
17- assert_index_equal )
17+ assert_index_equal , assertRaisesRegexp )
1818from pandas .compat import (
1919 range , long , lrange , StringIO , lmap , lzip , map , zip , builtins , OrderedDict
2020)
3030import pandas .util .testing as tm
3131import pandas as pd
3232
33+
3334def commonSetUp (self ):
3435 self .dateRange = bdate_range ('1/1/2005' , periods = 250 )
3536 self .stringIndex = Index ([rands (8 ).upper () for x in range (250 )])
@@ -72,7 +73,8 @@ def setUp(self):
7273 'B' : ['one' , 'one' , 'two' , 'three' ,
7374 'two' , 'two' , 'one' , 'three' ],
7475 'C' : np .random .randn (8 ),
75- 'D' : np .array (np .random .randn (8 ),dtype = 'float32' )})
76+ 'D' : np .array (np .random .randn (8 ),
77+ dtype = 'float32' )})
7678
7779 index = MultiIndex (levels = [['foo' , 'bar' , 'baz' , 'qux' ],
7880 ['one' , 'two' , 'three' ]],
@@ -114,7 +116,7 @@ def checkit(dtype):
114116
115117 assert_series_equal (agged , grouped .agg (np .mean )) # shorthand
116118 assert_series_equal (agged , grouped .mean ())
117- assert_series_equal (grouped .agg (np .sum ),grouped .sum ())
119+ assert_series_equal (grouped .agg (np .sum ), grouped .sum ())
118120
119121 transformed = grouped .transform (lambda x : x * x .sum ())
120122 self .assertEqual (transformed [7 ], 12 )
@@ -138,10 +140,20 @@ def checkit(dtype):
138140 # corner cases
139141 self .assertRaises (Exception , grouped .aggregate , lambda x : x * 2 )
140142
141-
142- for dtype in ['int64' ,'int32' ,'float64' ,'float32' ]:
143+ for dtype in ['int64' , 'int32' , 'float64' , 'float32' ]:
143144 checkit (dtype )
144145
146+ def test_select_bad_cols (self ):
147+ df = DataFrame ([[1 , 2 ]], columns = ['A' , 'B' ])
148+ g = df .groupby ('A' )
149+ self .assertRaises (KeyError , g .__getitem__ , ['C' ]) # g[['C']]
150+
151+ self .assertRaises (KeyError , g .__getitem__ , ['A' , 'C' ]) # g[['A', 'C']]
152+ with assertRaisesRegexp (KeyError , '^[^A]+$' ):
153+ # A should not be referenced as a bad column...
154+ # will have to rethink regex if you change message!
155+ g [['A' , 'C' ]]
156+
145157 def test_first_last_nth (self ):
146158 # tests for first / last / nth
147159 grouped = self .df .groupby ('A' )
0 commit comments