@@ -328,6 +328,53 @@ def test_lower_upper(self):
328328 result = result .str .lower ()
329329 tm .assert_series_equal (result , values )
330330
331+ def test_capitalize (self ):
332+ values = Series (["FOO" , "BAR" , NA , "Blah" , "blurg" ])
333+ result = values .str .capitalize ()
334+ exp = Series (["Foo" , "Bar" , NA , "Blah" , "Blurg" ])
335+ tm .assert_series_equal (result , exp )
336+
337+ # mixed
338+ mixed = Series (["FOO" , NA , "bar" , True , datetime .today (),
339+ "blah" , None , 1 , 2. ])
340+ mixed = mixed .str .capitalize ()
341+ exp = Series (["Foo" , NA , "Bar" , NA , NA , "Blah" , NA , NA , NA ])
342+ tm .assert_almost_equal (mixed , exp )
343+
344+ # unicode
345+ values = Series ([u ("FOO" ), NA , u ("bar" ), u ("Blurg" )])
346+ results = values .str .capitalize ()
347+ exp = Series ([u ("Foo" ), NA , u ("Bar" ), u ("Blurg" )])
348+ tm .assert_series_equal (results , exp )
349+
350+ def test_swapcase (self ):
351+ values = Series (["FOO" , "BAR" , NA , "Blah" , "blurg" ])
352+ result = values .str .swapcase ()
353+ exp = Series (["foo" , "bar" , NA , "bLAH" , "BLURG" ])
354+ tm .assert_series_equal (result , exp )
355+
356+ # mixed
357+ mixed = Series (["FOO" , NA , "bar" , True , datetime .today (),
358+ "Blah" , None , 1 , 2. ])
359+ mixed = mixed .str .swapcase ()
360+ exp = Series (["foo" , NA , "BAR" , NA , NA , "bLAH" , NA , NA , NA ])
361+ tm .assert_almost_equal (mixed , exp )
362+
363+ # unicode
364+ values = Series ([u ("FOO" ), NA , u ("bar" ), u ("Blurg" )])
365+ results = values .str .swapcase ()
366+ exp = Series ([u ("foo" ), NA , u ("BAR" ), u ("bLURG" )])
367+ tm .assert_series_equal (results , exp )
368+
369+ def test_casemethods (self ):
370+ values = ['aaa' , 'bbb' , 'CCC' , 'Dddd' , 'eEEE' ]
371+ s = Series (values )
372+ self .assertEqual (s .str .lower ().tolist (), [v .lower () for v in values ])
373+ self .assertEqual (s .str .upper ().tolist (), [v .upper () for v in values ])
374+ self .assertEqual (s .str .title ().tolist (), [v .title () for v in values ])
375+ self .assertEqual (s .str .capitalize ().tolist (), [v .capitalize () for v in values ])
376+ self .assertEqual (s .str .swapcase ().tolist (), [v .swapcase () for v in values ])
377+
331378 def test_replace (self ):
332379 values = Series (['fooBAD__barBAD' , NA ])
333380
@@ -636,6 +683,8 @@ def test_empty_str_methods(self):
636683 tm .assert_series_equal (empty_str , empty .str .istitle ())
637684 tm .assert_series_equal (empty_str , empty .str .isnumeric ())
638685 tm .assert_series_equal (empty_str , empty .str .isdecimal ())
686+ tm .assert_series_equal (empty_str , empty .str .capitalize ())
687+ tm .assert_series_equal (empty_str , empty .str .swapcase ())
639688
640689 def test_ismethods (self ):
641690 values = ['A' , 'b' , 'Xy' , '4' , '3A' , '' , 'TT' , '55' , '-' , ' ' ]
0 commit comments