@@ -770,21 +770,62 @@ def test_pad(self):
770
770
u ('eeeeee' )])
771
771
tm .assert_almost_equal (result , exp )
772
772
773
- def test_center (self ):
773
+ def test_pad_fillchar (self ):
774
+
775
+ values = Series (['a' , 'b' , NA , 'c' , NA , 'eeeeee' ])
776
+
777
+ result = values .str .pad (5 , side = 'left' , fillchar = 'X' )
778
+ exp = Series (['XXXXa' , 'XXXXb' , NA , 'XXXXc' , NA , 'eeeeee' ])
779
+ tm .assert_almost_equal (result , exp )
780
+
781
+ result = values .str .pad (5 , side = 'right' , fillchar = 'X' )
782
+ exp = Series (['aXXXX' , 'bXXXX' , NA , 'cXXXX' , NA , 'eeeeee' ])
783
+ tm .assert_almost_equal (result , exp )
784
+
785
+ result = values .str .pad (5 , side = 'both' , fillchar = 'X' )
786
+ exp = Series (['XXaXX' , 'XXbXX' , NA , 'XXcXX' , NA , 'eeeeee' ])
787
+ tm .assert_almost_equal (result , exp )
788
+
789
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not str" ):
790
+ result = values .str .pad (5 , fillchar = 'XY' )
791
+
792
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not int" ):
793
+ result = values .str .pad (5 , fillchar = 5 )
794
+
795
+ def test_center_ljust_rjust (self ):
774
796
values = Series (['a' , 'b' , NA , 'c' , NA , 'eeeeee' ])
775
797
776
798
result = values .str .center (5 )
777
799
exp = Series ([' a ' , ' b ' , NA , ' c ' , NA , 'eeeeee' ])
778
800
tm .assert_almost_equal (result , exp )
779
801
802
+ result = values .str .ljust (5 )
803
+ exp = Series (['a ' , 'b ' , NA , 'c ' , NA , 'eeeeee' ])
804
+ tm .assert_almost_equal (result , exp )
805
+
806
+ result = values .str .rjust (5 )
807
+ exp = Series ([' a' , ' b' , NA , ' c' , NA , 'eeeeee' ])
808
+ tm .assert_almost_equal (result , exp )
809
+
780
810
# mixed
781
811
mixed = Series (['a' , NA , 'b' , True , datetime .today (),
782
812
'c' , 'eee' , None , 1 , 2. ])
783
813
784
814
rs = Series (mixed ).str .center (5 )
785
815
xp = Series ([' a ' , NA , ' b ' , NA , NA , ' c ' , ' eee ' , NA , NA ,
786
816
NA ])
817
+ tm .assert_isinstance (rs , Series )
818
+ tm .assert_almost_equal (rs , xp )
787
819
820
+ rs = Series (mixed ).str .ljust (5 )
821
+ xp = Series (['a ' , NA , 'b ' , NA , NA , 'c ' , 'eee ' , NA , NA ,
822
+ NA ])
823
+ tm .assert_isinstance (rs , Series )
824
+ tm .assert_almost_equal (rs , xp )
825
+
826
+ rs = Series (mixed ).str .rjust (5 )
827
+ xp = Series ([' a' , NA , ' b' , NA , NA , ' c' , ' eee' , NA , NA ,
828
+ NA ])
788
829
tm .assert_isinstance (rs , Series )
789
830
tm .assert_almost_equal (rs , xp )
790
831
@@ -797,6 +838,58 @@ def test_center(self):
797
838
u ('eeeeee' )])
798
839
tm .assert_almost_equal (result , exp )
799
840
841
+ result = values .str .ljust (5 )
842
+ exp = Series ([u ('a ' ), u ('b ' ), NA , u ('c ' ), NA ,
843
+ u ('eeeeee' )])
844
+ tm .assert_almost_equal (result , exp )
845
+
846
+ result = values .str .rjust (5 )
847
+ exp = Series ([u (' a' ), u (' b' ), NA , u (' c' ), NA ,
848
+ u ('eeeeee' )])
849
+ tm .assert_almost_equal (result , exp )
850
+
851
+ def test_center_ljust_rjust_fillchar (self ):
852
+ values = Series (['a' , 'bb' , 'cccc' , 'ddddd' , 'eeeeee' ])
853
+
854
+ result = values .str .center (5 , fillchar = 'X' )
855
+ expected = Series (['XXaXX' , 'XXbbX' , 'Xcccc' , 'ddddd' , 'eeeeee' ])
856
+ tm .assert_series_equal (result , expected )
857
+ expected = np .array ([v .center (5 , 'X' ) for v in values .values ])
858
+ tm .assert_numpy_array_equal (result .values , expected )
859
+
860
+ result = values .str .ljust (5 , fillchar = 'X' )
861
+ expected = Series (['aXXXX' , 'bbXXX' , 'ccccX' , 'ddddd' , 'eeeeee' ])
862
+ tm .assert_series_equal (result , expected )
863
+ expected = np .array ([v .ljust (5 , 'X' ) for v in values .values ])
864
+ tm .assert_numpy_array_equal (result .values , expected )
865
+
866
+ result = values .str .rjust (5 , fillchar = 'X' )
867
+ expected = Series (['XXXXa' , 'XXXbb' , 'Xcccc' , 'ddddd' , 'eeeeee' ])
868
+ tm .assert_series_equal (result , expected )
869
+ expected = np .array ([v .rjust (5 , 'X' ) for v in values .values ])
870
+ tm .assert_numpy_array_equal (result .values , expected )
871
+
872
+ # If fillchar is not a charatter, normal str raises TypeError
873
+ # 'aaa'.ljust(5, 'XY')
874
+ # TypeError: must be char, not str
875
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not str" ):
876
+ result = values .str .center (5 , fillchar = 'XY' )
877
+
878
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not str" ):
879
+ result = values .str .ljust (5 , fillchar = 'XY' )
880
+
881
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not str" ):
882
+ result = values .str .rjust (5 , fillchar = 'XY' )
883
+
884
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not int" ):
885
+ result = values .str .center (5 , fillchar = 1 )
886
+
887
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not int" ):
888
+ result = values .str .ljust (5 , fillchar = 1 )
889
+
890
+ with tm .assertRaisesRegexp (TypeError , "fillchar must be a character, not int" ):
891
+ result = values .str .rjust (5 , fillchar = 1 )
892
+
800
893
def test_split (self ):
801
894
values = Series (['a_b_c' , 'c_d_e' , NA , 'f_g_h' ])
802
895
0 commit comments