@@ -328,6 +328,53 @@ def test_lower_upper(self):
328
328
result = result .str .lower ()
329
329
tm .assert_series_equal (result , values )
330
330
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
+
331
378
def test_replace (self ):
332
379
values = Series (['fooBAD__barBAD' , NA ])
333
380
@@ -636,6 +683,8 @@ def test_empty_str_methods(self):
636
683
tm .assert_series_equal (empty_str , empty .str .istitle ())
637
684
tm .assert_series_equal (empty_str , empty .str .isnumeric ())
638
685
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 ())
639
688
640
689
def test_ismethods (self ):
641
690
values = ['A' , 'b' , 'Xy' , '4' , '3A' , '' , 'TT' , '55' , '-' , ' ' ]
0 commit comments