@@ -882,6 +882,53 @@ def test_find_nan(self):
882
882
result = values .str .rfind ('EF' , 3 , 6 )
883
883
tm .assert_series_equal (result , Series ([4 , np .nan , - 1 , np .nan , - 1 ]))
884
884
885
+ def test_index (self ):
886
+ for klass in [Series , Index ]:
887
+ s = klass (['ABCDEFG' , 'BCDEFEF' , 'DEFGHIJEF' , 'EFGHEF' ])
888
+
889
+ result = s .str .index ('EF' )
890
+ tm .assert_array_equal (result , klass ([4 , 3 , 1 , 0 ]))
891
+ expected = np .array ([v .index ('EF' ) for v in s .values ])
892
+ tm .assert_array_equal (result .values , expected )
893
+
894
+ result = s .str .rindex ('EF' )
895
+ tm .assert_array_equal (result , klass ([4 , 5 , 7 , 4 ]))
896
+ expected = np .array ([v .rindex ('EF' ) for v in s .values ])
897
+ tm .assert_array_equal (result .values , expected )
898
+
899
+ result = s .str .index ('EF' , 3 )
900
+ tm .assert_array_equal (result , klass ([4 , 3 , 7 , 4 ]))
901
+ expected = np .array ([v .index ('EF' , 3 ) for v in s .values ])
902
+ tm .assert_array_equal (result .values , expected )
903
+
904
+ result = s .str .rindex ('EF' , 3 )
905
+ tm .assert_array_equal (result , klass ([4 , 5 , 7 , 4 ]))
906
+ expected = np .array ([v .rindex ('EF' , 3 ) for v in s .values ])
907
+ tm .assert_array_equal (result .values , expected )
908
+
909
+ result = s .str .index ('E' , 4 , 8 )
910
+ tm .assert_array_equal (result , klass ([4 , 5 , 7 , 4 ]))
911
+ expected = np .array ([v .index ('E' , 4 , 8 ) for v in s .values ])
912
+ tm .assert_array_equal (result .values , expected )
913
+
914
+ result = s .str .rindex ('E' , 0 , 5 )
915
+ tm .assert_array_equal (result , klass ([4 , 3 , 1 , 4 ]))
916
+ expected = np .array ([v .rindex ('E' , 0 , 5 ) for v in s .values ])
917
+ tm .assert_array_equal (result .values , expected )
918
+
919
+ with tm .assertRaisesRegexp (ValueError , "substring not found" ):
920
+ result = s .str .index ('DE' )
921
+
922
+ with tm .assertRaisesRegexp (TypeError , "expected a string object, not int" ):
923
+ result = s .str .index (0 )
924
+
925
+ # test with nan
926
+ s = Series (['abcb' , 'ab' , 'bcbe' , np .nan ])
927
+ result = s .str .index ('b' )
928
+ tm .assert_array_equal (result , Series ([1 , 1 , 0 , np .nan ]))
929
+ result = s .str .rindex ('b' )
930
+ tm .assert_array_equal (result , Series ([3 , 1 , 2 , np .nan ]))
931
+
885
932
def test_pad (self ):
886
933
values = Series (['a' , 'b' , NA , 'c' , NA , 'eeeeee' ])
887
934
0 commit comments