@@ -1036,20 +1036,43 @@ def check_slice(in_slice, expected):
10361036 def test_drop (self ):
10371037 n = len (self .strIndex )
10381038
1039- dropped = self .strIndex .drop (self .strIndex [lrange (5 , 10 )])
1039+ drop = self .strIndex [lrange (5 , 10 )]
1040+ dropped = self .strIndex .drop (drop )
10401041 expected = self .strIndex [lrange (5 ) + lrange (10 , n )]
10411042 self .assertTrue (dropped .equals (expected ))
10421043
10431044 self .assertRaises (ValueError , self .strIndex .drop , ['foo' , 'bar' ])
1045+ self .assertRaises (ValueError , self .strIndex .drop , ['1' , 'bar' ])
1046+
1047+ # errors='ignore'
1048+ mixed = drop .tolist () + ['foo' ]
1049+ dropped = self .strIndex .drop (mixed , errors = 'ignore' )
1050+ expected = self .strIndex [lrange (5 ) + lrange (10 , n )]
1051+ self .assert_index_equal (dropped , expected )
1052+
1053+ dropped = self .strIndex .drop (['foo' , 'bar' ], errors = 'ignore' )
1054+ expected = self .strIndex [lrange (n )]
1055+ self .assert_index_equal (dropped , expected )
10441056
10451057 dropped = self .strIndex .drop (self .strIndex [0 ])
10461058 expected = self .strIndex [1 :]
1047- self .assertTrue (dropped . equals ( expected ) )
1059+ self .assert_index_equal (dropped , expected )
10481060
10491061 ser = Index ([1 , 2 , 3 ])
10501062 dropped = ser .drop (1 )
10511063 expected = Index ([2 , 3 ])
1052- self .assertTrue (dropped .equals (expected ))
1064+ self .assert_index_equal (dropped , expected )
1065+
1066+ # errors='ignore'
1067+ self .assertRaises (ValueError , ser .drop , [3 , 4 ])
1068+
1069+ dropped = ser .drop (4 , errors = 'ignore' )
1070+ expected = Index ([1 , 2 , 3 ])
1071+ self .assert_index_equal (dropped , expected )
1072+
1073+ dropped = ser .drop ([3 , 4 , 5 ], errors = 'ignore' )
1074+ expected = Index ([1 , 2 ])
1075+ self .assert_index_equal (dropped , expected )
10531076
10541077 def test_tuple_union_bug (self ):
10551078 import pandas
@@ -3529,21 +3552,50 @@ def test_drop(self):
35293552 dropped2 = self .index .drop (index )
35303553
35313554 expected = self .index [[0 , 2 , 3 , 5 ]]
3532- self .assertTrue (dropped . equals ( expected ) )
3533- self .assertTrue (dropped2 . equals ( expected ) )
3555+ self .assert_index_equal (dropped , expected )
3556+ self .assert_index_equal (dropped2 , expected )
35343557
35353558 dropped = self .index .drop (['bar' ])
35363559 expected = self .index [[0 , 1 , 3 , 4 , 5 ]]
3537- self .assertTrue (dropped .equals (expected ))
3560+ self .assert_index_equal (dropped , expected )
3561+
3562+ dropped = self .index .drop ('foo' )
3563+ expected = self .index [[2 , 3 , 4 , 5 ]]
3564+ self .assert_index_equal (dropped , expected )
35383565
35393566 index = MultiIndex .from_tuples ([('bar' , 'two' )])
35403567 self .assertRaises (KeyError , self .index .drop , [('bar' , 'two' )])
35413568 self .assertRaises (KeyError , self .index .drop , index )
3569+ self .assertRaises (KeyError , self .index .drop , ['foo' , 'two' ])
3570+
3571+ # partially correct argument
3572+ mixed_index = MultiIndex .from_tuples ([('qux' , 'one' ), ('bar' , 'two' )])
3573+ self .assertRaises (KeyError , self .index .drop , mixed_index )
3574+
3575+ # error='ignore'
3576+ dropped = self .index .drop (index , errors = 'ignore' )
3577+ expected = self .index [[0 , 1 , 2 , 3 , 4 , 5 ]]
3578+ self .assert_index_equal (dropped , expected )
3579+
3580+ dropped = self .index .drop (mixed_index , errors = 'ignore' )
3581+ expected = self .index [[0 , 1 , 2 , 3 , 5 ]]
3582+ self .assert_index_equal (dropped , expected )
3583+
3584+ dropped = self .index .drop (['foo' , 'two' ], errors = 'ignore' )
3585+ expected = self .index [[2 , 3 , 4 , 5 ]]
3586+ self .assert_index_equal (dropped , expected )
35423587
35433588 # mixed partial / full drop
35443589 dropped = self .index .drop (['foo' , ('qux' , 'one' )])
35453590 expected = self .index [[2 , 3 , 5 ]]
3546- self .assertTrue (dropped .equals (expected ))
3591+ self .assert_index_equal (dropped , expected )
3592+
3593+ # mixed partial / full drop / error='ignore'
3594+ mixed_index = ['foo' , ('qux' , 'one' ), 'two' ]
3595+ self .assertRaises (KeyError , self .index .drop , mixed_index )
3596+ dropped = self .index .drop (mixed_index , errors = 'ignore' )
3597+ expected = self .index [[2 , 3 , 5 ]]
3598+ self .assert_index_equal (dropped , expected )
35473599
35483600 def test_droplevel_with_names (self ):
35493601 index = self .index [self .index .get_loc ('foo' )]
0 commit comments