@@ -4002,19 +4002,47 @@ def test_nsmallest_nlargest(self):
40024002 # float, int, datetime64 (use i8), timedelts64 (same),
40034003 # object that are numbers, object that are strings
40044004
4005- s_list = [Series ([3 , 2 , 1 , 2 , 5 ]),
4006- Series ([3. , 2. , 1. , 2. , 5. ]),
4007- Series ([3. , 2 , 1 , 2 , 5 ], dtype = 'object' ),
4008- Series ([3. , 2 , 1 , 2 , '5' ], dtype = 'object' ),
4009- Series (pd .to_datetime (['2003' , '2002' , '2001' , '2002' , '2005' ]))]
4005+ base = [3 , 2 , 1 , 2 , 5 ]
4006+
4007+ s_list = [
4008+ Series (base , dtype = 'int8' ),
4009+ Series (base , dtype = 'int16' ),
4010+ Series (base , dtype = 'int32' ),
4011+ Series (base , dtype = 'int64' ),
4012+ Series (base , dtype = 'float32' ),
4013+ Series (base , dtype = 'float64' ),
4014+ Series (base , dtype = 'uint8' ),
4015+ Series (base , dtype = 'uint16' ),
4016+ Series (base , dtype = 'uint32' ),
4017+ Series (base , dtype = 'uint64' ),
4018+ Series (base ).astype ('timedelta64[ns]' ),
4019+ Series (pd .to_datetime (['2003' , '2002' , '2001' , '2002' , '2005' ])),
4020+ ]
4021+
4022+ raising = [
4023+ Series ([3. , 2 , 1 , 2 , '5' ], dtype = 'object' ),
4024+ Series ([3. , 2 , 1 , 2 , 5 ], dtype = 'object' ),
4025+ Series ([3. , 2 , 1 , 2 , 5 ], dtype = 'complex256' ),
4026+ Series ([3. , 2 , 1 , 2 , 5 ], dtype = 'complex128' ),
4027+ ]
4028+
4029+ for r in raising :
4030+ dt = r .dtype
4031+ msg = "Cannot use method 'n(larg|small)est' with dtype %s" % dt
4032+ args = 2 , len (r ), 0 , - 1
4033+ methods = r .nlargest , r .nsmallest
4034+ for method , arg in product (methods , args ):
4035+ with tm .assertRaisesRegexp (TypeError , msg ):
4036+ method (arg )
40104037
40114038 for s in s_list :
40124039
40134040 assert_series_equal (s .nsmallest (2 ), s .iloc [[2 , 1 ]])
40144041 assert_series_equal (s .nsmallest (2 , take_last = True ), s .iloc [[2 , 3 ]])
40154042
40164043 assert_series_equal (s .nlargest (3 ), s .iloc [[4 , 0 , 1 ]])
4017- assert_series_equal (s .nlargest (3 , take_last = True ), s .iloc [[4 , 0 , 3 ]])
4044+ assert_series_equal (s .nlargest (3 , take_last = True ),
4045+ s .iloc [[4 , 0 , 3 ]])
40184046
40194047 empty = s .iloc [0 :0 ]
40204048 assert_series_equal (s .nsmallest (0 ), empty )
@@ -4025,7 +4053,8 @@ def test_nsmallest_nlargest(self):
40254053 assert_series_equal (s .nsmallest (len (s )), s .order ())
40264054 assert_series_equal (s .nsmallest (len (s ) + 1 ), s .order ())
40274055 assert_series_equal (s .nlargest (len (s )), s .iloc [[4 , 0 , 1 , 3 , 2 ]])
4028- assert_series_equal (s .nlargest (len (s ) + 1 ), s .iloc [[4 , 0 , 1 , 3 , 2 ]])
4056+ assert_series_equal (s .nlargest (len (s ) + 1 ),
4057+ s .iloc [[4 , 0 , 1 , 3 , 2 ]])
40294058
40304059 s = Series ([3. , np .nan , 1 , 2 , 5 ])
40314060 assert_series_equal (s .nlargest (), s .iloc [[4 , 0 , 3 , 2 ]])
0 commit comments