@@ -837,6 +837,101 @@ def test_rename_objects(self):
837
837
assert 'FOO' in renamed
838
838
assert 'foo' not in renamed
839
839
840
+ def test_rename_columns (self ):
841
+ df = pd .DataFrame ({"A" : [1 , 2 ], "B" : [1 , 2 ]}, index = ['X' , 'Y' ])
842
+ expected = pd .DataFrame ({"a" : [1 , 2 ], "b" : [1 , 2 ]}, index = ['X' , 'Y' ])
843
+
844
+ result = df .rename (str .lower , axis = 1 )
845
+ assert_frame_equal (result , expected )
846
+
847
+ result = df .rename (str .lower , axis = 'columns' )
848
+ assert_frame_equal (result , expected )
849
+
850
+ result = df .rename ({"A" : 'a' , 'B' : 'b' }, axis = 1 )
851
+ assert_frame_equal (result , expected )
852
+
853
+ result = df .rename ({"A" : 'a' , 'B' : 'b' }, axis = 'columns' )
854
+ assert_frame_equal (result , expected )
855
+
856
+ # Index
857
+ expected = pd .DataFrame ({"A" : [1 , 2 ], "B" : [1 , 2 ]}, index = ['x' , 'y' ])
858
+ result = df .rename (str .lower , axis = 0 )
859
+ assert_frame_equal (result , expected )
860
+
861
+ result = df .rename (str .lower , axis = 'index' )
862
+ assert_frame_equal (result , expected )
863
+
864
+ result = df .rename ({'X' : 'x' , 'Y' : 'y' }, axis = 0 )
865
+ assert_frame_equal (result , expected )
866
+
867
+ result = df .rename ({'X' : 'x' , 'Y' : 'y' }, axis = 'index' )
868
+ assert_frame_equal (result , expected )
869
+
870
+ def test_rename_mapper_multi (self ):
871
+ df = pd .DataFrame ({"A" : ['a' , 'b' ], "B" : ['c' , 'd' ],
872
+ 'C' : [1 , 2 ]}).set_index (["A" , "B" ])
873
+ result = df .rename (str .upper )
874
+ expected = df .rename (index = str .upper )
875
+ assert_frame_equal (result , expected )
876
+
877
+ def test_rename_raises (self ):
878
+ df = pd .DataFrame ({"A" : [1 , 2 ], "B" : [1 , 2 ]}, index = ['0' , '1' ])
879
+
880
+ # Named target and axis
881
+ with tm .assert_raises_regex (TypeError , None ):
882
+ df .rename (index = str .lower , axis = 1 )
883
+
884
+ with tm .assert_raises_regex (TypeError , None ):
885
+ df .rename (index = str .lower , axis = 'columns' )
886
+
887
+ with tm .assert_raises_regex (TypeError , None ):
888
+ df .rename (index = str .lower , axis = 0 )
889
+
890
+ with tm .assert_raises_regex (TypeError , None ):
891
+ df .rename (index = str .lower , axis = 'columns' )
892
+
893
+ with tm .assert_raises_regex (TypeError , None ):
894
+ df .rename (columns = str .lower , axis = 'columns' )
895
+
896
+ # Multiple targets and axis
897
+ with tm .assert_raises_regex (TypeError , None ):
898
+ df .rename (str .lower , str .lower , axis = 'columns' )
899
+
900
+ # Too many targets
901
+ with tm .assert_raises_regex (TypeError , None ):
902
+ df .rename (str .lower , str .lower , str .lower )
903
+
904
+ def test_drop_api_equivalence (self ):
905
+ # equivalence of the labels/axis and index/columns API's
906
+ df = DataFrame ([[1 , 2 , 3 ], [3 , 4 , 5 ], [5 , 6 , 7 ]],
907
+ index = ['a' , 'b' , 'c' ],
908
+ columns = ['d' , 'e' , 'f' ])
909
+
910
+ res1 = df .drop ('a' )
911
+ res2 = df .drop (index = 'a' )
912
+ tm .assert_frame_equal (res1 , res2 )
913
+
914
+ res1 = df .drop ('d' , 1 )
915
+ res2 = df .drop (columns = 'd' )
916
+ tm .assert_frame_equal (res1 , res2 )
917
+
918
+ res1 = df .drop (labels = 'e' , axis = 1 )
919
+ res2 = df .drop (columns = 'e' )
920
+ tm .assert_frame_equal (res1 , res2 )
921
+
922
+ res1 = df .drop (['a' ], axis = 0 )
923
+ res2 = df .drop (index = ['a' ])
924
+ tm .assert_frame_equal (res1 , res2 )
925
+
926
+ res1 = df .drop (['a' ], axis = 0 ).drop (['d' ], axis = 1 )
927
+ res2 = df .drop (index = ['a' ], columns = ['d' ])
928
+
929
+ with pytest .raises (ValueError ):
930
+ df .drop (labels = 'a' , index = 'b' )
931
+
932
+ with pytest .raises (ValueError ):
933
+ df .drop (axis = 1 )
934
+
840
935
def test_assign_columns (self ):
841
936
self .frame ['hi' ] = 'there'
842
937
@@ -860,6 +955,14 @@ def test_set_index_preserve_categorical_dtype(self):
860
955
result = result .reindex (columns = df .columns )
861
956
tm .assert_frame_equal (result , df )
862
957
958
+ def test_ambiguous_warns (self ):
959
+ df = pd .DataFrame ({"A" : [1 , 2 ]})
960
+ with tm .assert_produces_warning (UserWarning ):
961
+ df .rename (id , id )
962
+
963
+ with tm .assert_produces_warning (UserWarning ):
964
+ df .rename ({0 : 10 }, {"A" : "B" })
965
+
863
966
864
967
class TestIntervalIndex (object ):
865
968
0 commit comments